Skip to content
Clone
951a522
29 lines 730 B Rust
use models::space::spaces;
use space::share::authz::{MANAGE_CHANNELS, effective_permissions};
use crate::errors::ChatError;
use crate::services::service::ChatService;
pub async fn can_manage_space(
service: &ChatService,
space: &spaces::Model,
uid: i64,
) -> Result<bool, ChatError> {
if space.owner_id == uid {
return Ok(true);
}
let perms = effective_permissions(&service.state, space, uid).await?;
Ok(perms.has(MANAGE_CHANNELS))
}
pub async fn require_space_manager(
service: &ChatService,
space: &spaces::Model,
uid: i64,
) -> Result<(), ChatError> {
if can_manage_space(service, space, uid).await? {
Ok(())
} else {
Err(ChatError::Forbidden)
}
}