Skip to content
Clone
951a522
31 lines 795 B Rust
use models::space::spaces;
use space::share::authz::{MANAGE_CHANNELS, effective_permissions};
use crate::errors::IssueError;
use crate::services::service::IssueService;
pub async fn require_board_manage(
service: &IssueService,
space: &spaces::Model,
caller: i64,
) -> Result<(), IssueError> {
if is_board_manager(service, space, caller).await? {
Ok(())
} else {
Err(IssueError::Forbidden)
}
}
pub async fn is_board_manager(
service: &IssueService,
space: &spaces::Model,
caller: i64,
) -> Result<bool, IssueError> {
if space.owner_id == caller {
return Ok(true);
}
let perms = effective_permissions(&service.state, space, caller)
.await
.map_err(IssueError::from)?;
Ok(perms.has(MANAGE_CHANNELS))
}