kustos_shared/internal/
impls.rs1use itertools::Itertools;
8
9use super::{ToCasbin, ToCasbinString};
10use crate::{
11 access::AccessMethod,
12 subject::{
13 GroupToRole, PolicyGroup, PolicyInvite, PolicyRole, PolicyUser, UserToGroup, UserToRole,
14 },
15};
16
17impl ToCasbinString for AccessMethod {
18 fn to_casbin_string(self) -> String {
19 self.to_string()
20 }
21}
22
23impl ToCasbinString for &[AccessMethod] {
24 fn to_casbin_string(self) -> String {
26 self.iter()
27 .map(|&access_method| ToCasbinString::to_casbin_string(access_method))
28 .join("|")
29 }
30}
31
32impl ToCasbinString for PolicyUser {
33 fn to_casbin_string(self) -> String {
34 format!("user::{}", self.0)
35 }
36}
37
38impl ToCasbinString for PolicyInvite {
39 fn to_casbin_string(self) -> String {
40 format!("invite::{}", self.0)
41 }
42}
43
44impl ToCasbinString for PolicyRole {
45 fn to_casbin_string(self) -> String {
46 format!("role::{}", self.0)
47 }
48}
49
50impl ToCasbinString for PolicyGroup {
51 fn to_casbin_string(self) -> String {
52 format!("group::{}", self.0)
53 }
54}
55
56impl ToCasbin for GroupToRole {
57 fn to_casbin_policy(self) -> Vec<String> {
58 vec![self.0.to_casbin_string(), self.1.to_casbin_string()]
59 }
60}
61
62impl ToCasbin for UserToGroup {
63 fn to_casbin_policy(self) -> Vec<String> {
64 vec![self.0.to_casbin_string(), self.1.to_casbin_string()]
65 }
66}
67
68impl ToCasbin for UserToRole {
69 fn to_casbin_policy(self) -> Vec<String> {
70 vec![self.0.to_casbin_string(), self.1.to_casbin_string()]
71 }
72}