1
0
mirror of https://gitlab.com/comunic/comunicapiv3 synced 2025-06-21 08:55:16 +00:00

Can delete group members

This commit is contained in:
2020-06-27 18:28:38 +02:00
parent c28196f80e
commit 926892a29b
3 changed files with 60 additions and 6 deletions

View File

@ -245,5 +245,27 @@ pub fn cancel_request(r: &mut HttpRequestHandler) -> RequestResult {
/// Remove a member from a group (as a moderator or an admin)
pub fn delete_member(r: &mut HttpRequestHandler) -> RequestResult {
r.success("Implement me")
let group_id = r.post_group_id_with_access("groupID", GroupAccessLevel::MODERATOR_ACCESS)?;
// Get the membership of the user making the request
let curr_user_membership = groups_helper::get_membership(&group_id, r.user_id_opt())?;
// Get information about the member to delete
let user_id = r.post_user_id("userID")?;
let membership = groups_helper::get_membership(&group_id, Some(user_id.clone()))?;
if user_id == r.user_id()? && groups_helper::is_last_admin(&group_id, &r.user_id()?)? {
r.forbidden("You are the last administrator of this group!".to_string())?;
}
// Only administrator can delete members that are more than members (moderators & administrators)
if membership.level < GroupMembershipLevel::MEMBER && curr_user_membership.level != GroupMembershipLevel::ADMINISTRATOR {
r.forbidden("Only administrators can delete this membership!".to_string())?;
}
groups_helper::delete_member(&group_id, &user_id)?;
// TODO : Delete related notifications
r.success("Membership of the user has been successfully deleted!")
}