mirror of
				https://gitlab.com/comunic/comunicapiv2
				synced 2025-11-03 19:14:03 +00:00 
			
		
		
		
	Can delete a member of a group
This commit is contained in:
		@@ -387,6 +387,43 @@ export class GroupsController {
 | 
			
		||||
		h.success("The request has been successfully cancelled!");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Delete a member from a group (as a moderator or an admin)
 | 
			
		||||
	 * 
 | 
			
		||||
	 * @param h Request handler
 | 
			
		||||
	 */
 | 
			
		||||
	public static async DeleteMember(h: RequestHandler) {
 | 
			
		||||
		const groupID = await h.postGroupIDWithAccess("groupID", GroupsAccessLevel.MODERATOR_ACCESS);
 | 
			
		||||
		
 | 
			
		||||
		// Get the membership of the user making the request
 | 
			
		||||
		const currUserMembership = await GroupsHelper.GetMembershipInfo(groupID, h.getUserId());
 | 
			
		||||
 | 
			
		||||
		// Get the ID of the member to delete
 | 
			
		||||
		const userID = await h.postUserId("userID");
 | 
			
		||||
		const membership = await GroupsHelper.GetMembershipInfo(groupID, userID);
 | 
			
		||||
 | 
			
		||||
		if(membership == null)
 | 
			
		||||
			h.error(404, "Membership not found!");
 | 
			
		||||
 | 
			
		||||
		// If the user is an admin, he must not be the last admin of the group
 | 
			
		||||
		if(userID == h.getUserId() && currUserMembership.level == GroupMembershipLevels.ADMINISTRATOR
 | 
			
		||||
			&& await GroupsHelper.CountMembersAtLevel(groupID, GroupMembershipLevels.ADMINISTRATOR) == 1)
 | 
			
		||||
			h.error(401, "You are the last administrator of this group!");
 | 
			
		||||
		
 | 
			
		||||
		
 | 
			
		||||
		// TODO : validate this check
 | 
			
		||||
		// Only administrator can delete members that are more than member (moderators & administrators)
 | 
			
		||||
		if(membership.level < GroupMembershipLevels.MEMBER && currUserMembership.level != GroupMembershipLevels.ADMINISTRATOR)
 | 
			
		||||
			h.error(401, "Only an administrator can delete this membership!");
 | 
			
		||||
		
 | 
			
		||||
		// Delete the membership
 | 
			
		||||
		await GroupsHelper.DeleteMember(groupID, userID);
 | 
			
		||||
 | 
			
		||||
		// TODO : delete any group membership notifications
 | 
			
		||||
 | 
			
		||||
		h.success("Membership of the user has been successfully deleted!");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Turn a GroupInfo object into a valid API object
 | 
			
		||||
	 * 
 | 
			
		||||
 
 | 
			
		||||
@@ -114,4 +114,6 @@ export const Routes : Route[] = [
 | 
			
		||||
	{path: "/groups/send_request", cb: (h) => GroupsController.SendRequest(h)},
 | 
			
		||||
 | 
			
		||||
	{path: "/groups/cancel_request", cb: (h) => GroupsController.CancelRequest(h)},
 | 
			
		||||
 | 
			
		||||
	{path: "/groups/delete_member", cb: (h) => GroupsController.DeleteMember(h)},
 | 
			
		||||
]
 | 
			
		||||
		Reference in New Issue
	
	Block a user