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?;
member
.check_permission(&data, Permissions::CreateChannel)
.check_permission(&data, Permissions::ManageChannel)
.await?;
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?;
member
.check_permission(&data, Permissions::ManageServer)
.check_permission(&data, Permissions::ManageGuild)
.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?;
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?;

View file

@ -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<Self> {
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,
];