From 004e84ece9e2f94aeddf31eb9ac0093012bf7b72 Mon Sep 17 00:00:00 2001 From: Paul Makles Date: Mon, 14 Aug 2023 10:22:16 +0100 Subject: [PATCH] fix: revoke all channel permissions if can't view --- crates/core/permissions/src/impl.rs | 4 ++++ crates/core/permissions/src/models/mod.rs | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/crates/core/permissions/src/impl.rs b/crates/core/permissions/src/impl.rs index 11c378c6..2d424cf6 100644 --- a/crates/core/permissions/src/impl.rs +++ b/crates/core/permissions/src/impl.rs @@ -118,6 +118,10 @@ pub async fn calculate_channel_permissions(query: &mut P) -> permissions.restrict(*ALLOW_IN_TIMEOUT); } + if !permissions.has_channel_permission(ChannelPermission::ViewChannel) { + permissions.revoke_all(); + } + permissions } else { 0_u64.into() diff --git a/crates/core/permissions/src/models/mod.rs b/crates/core/permissions/src/models/mod.rs index ab70b88a..657b9927 100644 --- a/crates/core/permissions/src/models/mod.rs +++ b/crates/core/permissions/src/models/mod.rs @@ -28,6 +28,11 @@ impl PermissionValue { self.0 &= !v; } + /// Revoke all permissions + pub fn revoke_all(&mut self) { + self.0 = 0; + } + /// Restrict to given permissions pub fn restrict(&mut self, v: u64) { self.0 &= v;