From 42b2d08a0019093b93c48069a9c9c5025a2f17e4 Mon Sep 17 00:00:00 2001 From: Radical Date: Sat, 12 Jul 2025 16:15:30 +0200 Subject: [PATCH] feat: make permissions more concise --- src/api/v1/guilds/uuid/channels.rs | 2 +- src/api/v1/guilds/uuid/icon.rs | 2 +- src/api/v1/guilds/uuid/roles/mod.rs | 2 +- src/objects/role.rs | 29 ++++++++++++++--------------- 4 files changed, 17 insertions(+), 18 deletions(-) diff --git a/src/api/v1/guilds/uuid/channels.rs b/src/api/v1/guilds/uuid/channels.rs index 8fda917..b9f91cb 100644 --- a/src/api/v1/guilds/uuid/channels.rs +++ b/src/api/v1/guilds/uuid/channels.rs @@ -77,7 +77,7 @@ pub async fn create( let member = Member::check_membership(&mut conn, uuid, guild_uuid).await?; member - .check_permission(&data, Permissions::CreateChannel) + .check_permission(&data, Permissions::ManageChannel) .await?; let channel = Channel::new( diff --git a/src/api/v1/guilds/uuid/icon.rs b/src/api/v1/guilds/uuid/icon.rs index 43a5e05..600ccba 100644 --- a/src/api/v1/guilds/uuid/icon.rs +++ b/src/api/v1/guilds/uuid/icon.rs @@ -39,7 +39,7 @@ pub async fn upload( let member = Member::check_membership(&mut conn, uuid, guild_uuid).await?; member - .check_permission(&data, Permissions::ManageServer) + .check_permission(&data, Permissions::ManageGuild) .await?; let mut guild = Guild::fetch_one(&mut conn, guild_uuid).await?; diff --git a/src/api/v1/guilds/uuid/roles/mod.rs b/src/api/v1/guilds/uuid/roles/mod.rs index 5f38923..0fcc5b3 100644 --- a/src/api/v1/guilds/uuid/roles/mod.rs +++ b/src/api/v1/guilds/uuid/roles/mod.rs @@ -73,7 +73,7 @@ pub async fn create( let member = Member::check_membership(&mut conn, uuid, guild_uuid).await?; member - .check_permission(&data, Permissions::CreateRole) + .check_permission(&data, Permissions::ManageRole) .await?; let role = Role::new(&mut conn, guild_uuid, role_info.name.clone()).await?; diff --git a/src/objects/role.rs b/src/objects/role.rs index 4a75628..68e9c27 100644 --- a/src/objects/role.rs +++ b/src/objects/role.rs @@ -155,32 +155,31 @@ impl Role { #[derive(Clone, Copy, PartialEq, Eq)] pub enum Permissions { + /// Lets users send messages in the guild or channel SendMessage = 1, - CreateChannel = 2, - DeleteChannel = 4, - ManageChannel = 8, - CreateRole = 16, - DeleteRole = 32, - ManageRole = 64, - CreateInvite = 128, - ManageInvite = 256, - ManageServer = 512, - ManageMember = 1024, + /// Lets users create, delete and edit channels and categories or a singular channel depending on permission context + ManageChannel = 2, + /// Lets users manage roles in the guild + ManageRole = 4, + /// Lets users create invites in the guild + CreateInvite = 8, + /// Lets users manage invites in the guild + ManageInvite = 16, + /// Lets users change guild settings + ManageGuild = 32, + /// Lets users change member settings (nickname, etc) + ManageMember = 64, } impl Permissions { pub fn fetch_permissions(permissions: i64) -> Vec { let all_perms = vec![ Self::SendMessage, - Self::CreateChannel, - Self::DeleteChannel, Self::ManageChannel, - Self::CreateRole, - Self::DeleteRole, Self::ManageRole, Self::CreateInvite, Self::ManageInvite, - Self::ManageServer, + Self::ManageGuild, Self::ManageMember, ];