Relocate some access check code
This commit is contained in:
@@ -70,12 +70,12 @@ impl MessageContext {
|
||||
&self.thread_info
|
||||
}
|
||||
|
||||
pub fn sender_can_manage_global_config(&self) -> anyhow::Result<bool> {
|
||||
Ok(self.trigger_event_info.sender_is_admin)
|
||||
pub fn sender_can_manage_global_config(&self) -> bool {
|
||||
self.trigger_event_info.sender_is_admin
|
||||
}
|
||||
|
||||
pub fn sender_can_manage_room_local_agents(&self) -> anyhow::Result<bool> {
|
||||
Ok(self.sender_can_manage_global_config()?
|
||||
pub fn sender_can_manage_room_local_agents(&self) -> mxidwc::Result<bool> {
|
||||
Ok(self.sender_can_manage_global_config()
|
||||
|| self.sender_is_allowed_room_local_agent_manager()?)
|
||||
}
|
||||
|
||||
@@ -102,21 +102,8 @@ impl MessageContext {
|
||||
combined
|
||||
}
|
||||
|
||||
fn sender_is_allowed_room_local_agent_manager(&self) -> anyhow::Result<bool> {
|
||||
match &self
|
||||
.global_config()
|
||||
.access
|
||||
.room_local_agent_manager_patterns
|
||||
{
|
||||
None => Ok(false),
|
||||
Some(patterns) => {
|
||||
let allowed_regexes = mxidwc::parse_patterns_vector(patterns)?;
|
||||
|
||||
Ok(mxidwc::match_user_id(
|
||||
self.sender_id().as_str(),
|
||||
&allowed_regexes,
|
||||
))
|
||||
}
|
||||
}
|
||||
fn sender_is_allowed_room_local_agent_manager(&self) -> mxidwc::Result<bool> {
|
||||
self.room_config_context()
|
||||
.is_user_allowed_room_local_agent_manager(self.sender_id().clone())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
use mxlink::matrix_sdk::ruma::OwnedUserId;
|
||||
|
||||
use super::globalconfig::GlobalConfig;
|
||||
use super::roomconfig::RoomConfig;
|
||||
|
||||
@@ -180,4 +182,18 @@ impl RoomConfigContext {
|
||||
.clone()
|
||||
})
|
||||
}
|
||||
|
||||
pub fn is_user_allowed_room_local_agent_manager(
|
||||
&self,
|
||||
user_id: OwnedUserId,
|
||||
) -> mxidwc::Result<bool> {
|
||||
match &self.global_config.access.room_local_agent_manager_patterns {
|
||||
None => Ok(false),
|
||||
Some(patterns) => {
|
||||
let allowed_regexes = mxidwc::parse_patterns_vector(patterns)?;
|
||||
|
||||
Ok(mxidwc::match_user_id(user_id.as_str(), &allowed_regexes))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user