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:
@ -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!")
|
||||
}
|
Reference in New Issue
Block a user