use super::entities::{Permission, PermissionAction, ResourceType, Role}; use std::collections::HashSet; pub struct PermissionChecker; impl PermissionChecker { pub fn has_permission( roles: &[Role], action: PermissionAction, resource_type: ResourceType, ) -> bool { roles.iter().any(|role| { role.has_permission(action, resource_type) || role.has_permission(action, ResourceType::Global) }) } pub fn effective_permissions(roles: &[Role]) -> HashSet { roles .iter() .flat_map(|r| r.permissions.iter().copied()) .collect() } }