shared/application/rbac/
role_permission_service.rs1use crate::error::Result;
2
3use crate::domain::model::RolePermission;
4use crate::intern::rbac::RbacService;
5
6impl RbacService {
7 #[tracing::instrument(
8 name = "auth.insert_role_permission",
9 skip(self, role_id, permission_id)
10 )]
11 pub async fn insert_role_permission(&self, role_id: &str, permission_id: &str) -> Result<()> {
12 let role_permission = RolePermission::new(role_id, permission_id);
13
14 self.role_permission_repository
15 .insert(role_permission)
16 .await
17 }
18
19 #[tracing::instrument(
20 name = "auth.insert_role_permissions",
21 skip(self, role_id, permission_ids)
22 )]
23 pub async fn upsert_role_permissions(
24 &self,
25 role_id: &str,
26 permission_ids: Vec<String>,
27 ) -> Result<()> {
28 let role_permissions: Vec<RolePermission> = permission_ids
29 .iter()
30 .map(|p_id| RolePermission::new(role_id, p_id))
31 .collect();
32
33 self.role_permission_repository
34 .upsert_many(role_permissions)
35 .await
36 }
37
38 #[tracing::instrument(
39 name = "auth.find_role_permission", skip(self), fields(user.id = user_id)
40 )]
41 pub async fn find_role_permissions(&self, user_id: &str) -> Result<RolePermission> {
42 self.role_permission_repository.find(user_id).await
43 }
44}