feat: make permissions more concise
Some checks failed
ci/woodpecker/push/build-and-publish Pipeline failed
ci/woodpecker/push/publish-docs Pipeline was successful

This commit is contained in:
Radical 2025-07-12 16:15:30 +02:00
parent 1a0fefd364
commit 42b2d08a00
4 changed files with 17 additions and 18 deletions

View file

@ -77,7 +77,7 @@ pub async fn create(
let member = Member::check_membership(&mut conn, uuid, guild_uuid).await?; let member = Member::check_membership(&mut conn, uuid, guild_uuid).await?;
member member
.check_permission(&data, Permissions::CreateChannel) .check_permission(&data, Permissions::ManageChannel)
.await?; .await?;
let channel = Channel::new( let channel = Channel::new(

View file

@ -39,7 +39,7 @@ pub async fn upload(
let member = Member::check_membership(&mut conn, uuid, guild_uuid).await?; let member = Member::check_membership(&mut conn, uuid, guild_uuid).await?;
member member
.check_permission(&data, Permissions::ManageServer) .check_permission(&data, Permissions::ManageGuild)
.await?; .await?;
let mut guild = Guild::fetch_one(&mut conn, guild_uuid).await?; let mut guild = Guild::fetch_one(&mut conn, guild_uuid).await?;

View file

@ -73,7 +73,7 @@ pub async fn create(
let member = Member::check_membership(&mut conn, uuid, guild_uuid).await?; let member = Member::check_membership(&mut conn, uuid, guild_uuid).await?;
member member
.check_permission(&data, Permissions::CreateRole) .check_permission(&data, Permissions::ManageRole)
.await?; .await?;
let role = Role::new(&mut conn, guild_uuid, role_info.name.clone()).await?; let role = Role::new(&mut conn, guild_uuid, role_info.name.clone()).await?;

View file

@ -155,32 +155,31 @@ impl Role {
#[derive(Clone, Copy, PartialEq, Eq)] #[derive(Clone, Copy, PartialEq, Eq)]
pub enum Permissions { pub enum Permissions {
/// Lets users send messages in the guild or channel
SendMessage = 1, SendMessage = 1,
CreateChannel = 2, /// Lets users create, delete and edit channels and categories or a singular channel depending on permission context
DeleteChannel = 4, ManageChannel = 2,
ManageChannel = 8, /// Lets users manage roles in the guild
CreateRole = 16, ManageRole = 4,
DeleteRole = 32, /// Lets users create invites in the guild
ManageRole = 64, CreateInvite = 8,
CreateInvite = 128, /// Lets users manage invites in the guild
ManageInvite = 256, ManageInvite = 16,
ManageServer = 512, /// Lets users change guild settings
ManageMember = 1024, ManageGuild = 32,
/// Lets users change member settings (nickname, etc)
ManageMember = 64,
} }
impl Permissions { impl Permissions {
pub fn fetch_permissions(permissions: i64) -> Vec<Self> { pub fn fetch_permissions(permissions: i64) -> Vec<Self> {
let all_perms = vec![ let all_perms = vec![
Self::SendMessage, Self::SendMessage,
Self::CreateChannel,
Self::DeleteChannel,
Self::ManageChannel, Self::ManageChannel,
Self::CreateRole,
Self::DeleteRole,
Self::ManageRole, Self::ManageRole,
Self::CreateInvite, Self::CreateInvite,
Self::ManageInvite, Self::ManageInvite,
Self::ManageServer, Self::ManageGuild,
Self::ManageMember, Self::ManageMember,
]; ];