init
This commit is contained in:
1 parent
843dad8d79
commit
dc2be94a8d
10 files changed
+102
-38
No files matched your search
@@ -1,6 +1,6 @@
|
||||
use crate::models::{
|
||||
channel, channel_role_permission, channel_user_permission, computed_permission, role_user,
|
||||
server_role_permission, server_user,
|
||||
server_role_permission, server_user, server_user_permission,
|
||||
};
|
||||
use crate::permissions::{ChannelPermission, ServerPermission};
|
||||
use crate::repositories::{AnyResult, RepositoryContext};
|
||||
@@ -46,6 +46,7 @@ impl ComputedPermissionRepository {
|
||||
/// Les permissions effectives sont composées de :
|
||||
///
|
||||
/// - permissions serveur accordées aux rôles de l'utilisateur ;
|
||||
/// - permissions serveur accordées directement à l'utilisateur ;
|
||||
/// - permissions de canal accordées aux rôles de l'utilisateur ;
|
||||
/// - permissions directes de l'utilisateur dans les canaux.
|
||||
pub async fn full_sync_user(&self, user_id: Uuid, server_id: Uuid) -> AnyResult<()> {
|
||||
@@ -76,10 +77,23 @@ impl ComputedPermissionRepository {
|
||||
|
||||
for permission in role_permissions {
|
||||
server_permissions |=
|
||||
ServerPermission::from_bits_retain(permission.permission as u64);
|
||||
ServerPermission::from_bits_retain(permission.permissions as u64);
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Permissions serveur directes de l'utilisateur
|
||||
// ---------------------------------------------------------------------
|
||||
|
||||
if let Some(permission) = server_user_permission::Entity::find()
|
||||
.filter(server_user_permission::Column::ServerId.eq(server_id))
|
||||
.filter(server_user_permission::Column::UserId.eq(user_id))
|
||||
.one(&self.context.db)
|
||||
.await?
|
||||
{
|
||||
server_permissions |= ServerPermission::from_bits_retain(permission.permissions as u64);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// Canaux du serveur
|
||||
// ---------------------------------------------------------------------
|
||||
@@ -112,7 +126,7 @@ impl ComputedPermissionRepository {
|
||||
.entry(permission.channel_id)
|
||||
.or_default()
|
||||
.insert(ChannelPermission::from_bits_retain(
|
||||
permission.permission as u64,
|
||||
permission.permissions as u64,
|
||||
));
|
||||
}
|
||||
|
||||
@@ -135,7 +149,7 @@ impl ComputedPermissionRepository {
|
||||
.entry(permission.channel_id)
|
||||
.or_default()
|
||||
.insert(ChannelPermission::from_bits_retain(
|
||||
permission.permission as u64,
|
||||
permission.permissions as u64,
|
||||
));
|
||||
}
|
||||
|
||||
@@ -151,7 +165,7 @@ impl ComputedPermissionRepository {
|
||||
server_id: Set(server_id),
|
||||
scope_type: Set(PermissionScopeType::Server),
|
||||
resource_id: Set(server_id),
|
||||
server_permissions: Set(server_permissions.bits() as i64),
|
||||
permissions: Set(server_permissions.bits() as i64),
|
||||
..Default::default()
|
||||
});
|
||||
|
||||
@@ -166,7 +180,7 @@ impl ComputedPermissionRepository {
|
||||
server_id: Set(server_id),
|
||||
scope_type: Set(PermissionScopeType::Channel),
|
||||
resource_id: Set(channel.id),
|
||||
channel_permissions: Set(channel_permissions.bits() as i64),
|
||||
permissions: Set(channel_permissions.bits() as i64),
|
||||
..Default::default()
|
||||
});
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user