Skip to main content

shared/intern/
rbac.rs

1use crate::infrastructure::database::DatabaseAdapters;
2
3use crate::domain::repositories::{
4    PermissionRepository, RolePermissionRepository, RoleRepository, UserRoleRepository,
5};
6
7#[derive(Clone)]
8pub struct RbacService {
9    pub(crate) role_repository: RoleRepository,
10    pub(crate) user_role_repository: UserRoleRepository,
11    pub(crate) permission_repository: PermissionRepository,
12    pub(crate) role_permission_repository: RolePermissionRepository,
13}
14
15impl RbacService {
16    pub fn new(database_adapters: &DatabaseAdapters) -> Self {
17        Self {
18            role_repository: RoleRepository::new(database_adapters.role_adapter.clone()),
19            user_role_repository: UserRoleRepository::new(
20                database_adapters.user_role_adapter.clone(),
21            ),
22            permission_repository: PermissionRepository::new(
23                database_adapters.permission_adapter.clone(),
24            ),
25            role_permission_repository: RolePermissionRepository::new(
26                database_adapters.role_permission_adapter.clone(),
27            ),
28        }
29    }
30}