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 { 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) } }