Merge pull request 'Check if you are trying to kick owner' (#38) from wip/kick into main
All checks were successful
ci/woodpecker/push/build-and-publish Pipeline was successful
ci/woodpecker/push/publish-docs Pipeline was successful

Reviewed-on: #38
Reviewed-by: Radical <radical@radical.fun>
This commit is contained in:
Radical 2025-07-23 12:59:34 +00:00
commit a1857a1939
3 changed files with 7 additions and 1 deletions

View file

@ -51,7 +51,7 @@ pub async fn delete(
let deleter = Member::check_membership(&mut conn, uuid, member.guild_uuid).await?; let deleter = Member::check_membership(&mut conn, uuid, member.guild_uuid).await?;
deleter deleter
.check_permission(&app_state, Permissions::ManageMember) .check_permission(&app_state, Permissions::KickMember)
.await?; .await?;
member.delete(&mut conn).await?; member.delete(&mut conn).await?;

View file

@ -188,6 +188,9 @@ impl Member {
} }
pub async fn delete(self, conn: &mut Conn) -> Result<(), Error> { pub async fn delete(self, conn: &mut Conn) -> Result<(), Error> {
if self.is_owner {
return Err(Error::Forbidden("Can not kick owner".to_string()))
}
delete(guild_members::table) delete(guild_members::table)
.filter(guild_members::uuid.eq(self.uuid)) .filter(guild_members::uuid.eq(self.uuid))
.execute(conn) .execute(conn)

View file

@ -176,6 +176,8 @@ pub enum Permissions {
ManageGuild = 32, ManageGuild = 32,
/// Lets users change member settings (nickname, etc) /// Lets users change member settings (nickname, etc)
ManageMember = 64, ManageMember = 64,
/// Lets users kick members
KickMember = 256,
} }
impl Permissions { impl Permissions {
@ -188,6 +190,7 @@ impl Permissions {
Self::ManageInvite, Self::ManageInvite,
Self::ManageGuild, Self::ManageGuild,
Self::ManageMember, Self::ManageMember,
Self::KickMember,
]; ];
all_perms all_perms