RBAC with Domains API
واجهة برمجة تطبيقات أكثر سهولة في الاستخدام لـ RBAC مع النطاقات. هذه الواجهة هي مجموعة فرعية من واجهة إدارة API. يمكن لمستخدمي RBAC استخدام هذه الواجهة لتبسيط الكود الخاص بهم.
مرجع
المتغير العالمي e
يمثل مثيل Enforcer.
- Go
- Node.js
- PHP
- Python
- .NET
- Rust
- Java
e, err := NewEnforcer("examples/rbac_with_domains_model.conf", "examples/rbac_with_domains_policy.csv")
const e = await newEnforcer('examples/rbac_with_domains_model.conf', 'examples/rbac_with_domains_policy.csv')
$e = new Enforcer('examples/rbac_with_domains_model.conf', 'examples/rbac_with_domains_policy.csv');
e = casbin.Enforcer("examples/rbac_with_domains_model.conf", "examples/rbac_with_domains_policy.csv")
var e = new Enforcer("examples/rbac_with_domains_model.conf", "examples/rbac_with_domains_policy.csv");
let mut e = Enforcer::new("examples/rbac_with_domains_model.conf", "examples/rbac_with_domains_policy.csv").await?;
Enforcer e = new Enforcer("examples/rbac_with_domains_model.conf", "examples/rbac_with_domains_policy.csv");
GetUsersForRoleInDomain()
تقوم الدالة GetUsersForRoleInDomain()
باسترجاع المستخدمين الذين لديهم دور ضمن نطاق معين.
على سبيل المثال:
- Go
- Node.js
- Python
res := e.GetUsersForRoleInDomain("admin", "domain1")
const res = e.getUsersForRoleInDomain("admin", "domain1")
res = e.get_users_for_role_in_domain("admin", "domain1")
GetRolesForUserInDomain()
تقوم الدالة GetRolesForUserInDomain()
باسترجاع الأدوار التي يمتلكها مستخدم ضمن نطاق معين.
على سبيل المثال:
- Go
- Node.js
- Python
- Java
res := e.GetRolesForUserInDomain("admin", "domain1")
const res = e.getRolesForUserInDomain("alice", "domain1")
res = e.get_roles_for_user_in_domain("alice", "domain1")
List<String> res = e.getRolesForUserInDomain("admin", "domain1");
GetPermissionsForUserInDomain()
تقوم الدالة GetPermissionsForUserInDomain()
باسترجاع الأذونات لمستخدم أو دور ضمن نطاق معين.
على سبيل المثال:
- Go
- Java
res := e.GetPermissionsForUserInDomain("alice", "domain1")
List<List<String>> res = e.getPermissionsForUserInDomain("alice", "domain1");
AddRoleForUserInDomain()
تقوم الدالة AddRoleForUserInDomain()
بإضافة دور لمستخدم ضمن نطاق معين. تعيد false
إذا كان المستخدم يمتلك الدور بالفعل (لم يتم إجراء تغييرات).
على سبيل المثال:
- Go
- Python
- Java
ok, err := e.AddRoleForUserInDomain("alice", "admin", "domain1")
ok = e.add_role_for_user_in_domain("alice", "admin", "domain1")
boolean ok = e.addRoleForUserInDomain("alice", "admin", "domain1");
DeleteRoleForUserInDomain()
تقوم الدالة DeleteRoleForUserInDomain()
بإزالة دور لمستخدم ضمن نطاق معين. تعيد false
إذا لم يكن المستخدم يمتلك الدور (لم يتم إجراء تغييرات).
على سبيل المثال:
- Go
- Java
ok, err := e.DeleteRoleForUserInDomain("alice", "admin", "domain1")
boolean ok = e.deleteRoleForUserInDomain("alice", "admin", "domain1");
DeleteRolesForUserInDomain()
تقوم الدالة DeleteRolesForUserInDomain()
بإزالة جميع الأدوار لمستخدم ضمن نطاق معين. تعيد false
إذا لم يكن المستخدم يمتلك أي أدوار (لم يتم إجراء تغييرات).
على سبيل المثال:
- Go
ok, err := e.DeleteRolesForUserInDomain("alice", "domain1")
GetAllUsersByDomain()
تقوم الدالة GetAllUsersByDomain()
باسترجاع جميع المستخدمين المرتبطين بالنطاق المعطى. تعيد مصفوفة سلاسل فارغة إذا لم يتم تعريف نطاق في النموذج.
على سبيل المثال:
- Go
res := e.GetAllUsersByDomain("domain1")
DeleteAllUsersByDomain()
تقوم الدالة DeleteAllUsersByDomain()
بحذف جميع المستخدمين المرتبطين بالنطاق المعطى. تعيد false
إذا لم يتم تعريف نطاق في النموذج.
على سبيل المثال:
- Go
ok, err := e.DeleteAllUsersByDomain("domain1")
DeleteDomains()
سيؤدي DeleteDomains إلى حذف جميع المستخدمين والأدوار المرتبطة. سيؤدي إلى حذف جميع النطاقات إذا لم يتم توفير معامل.
على سبيل المثال:
- Go
ok, err := e.DeleteDomains("domain1", "domain2")
GetAllDomains()
سيقوم GetAllDomains باسترجاع جميع النطاقات.
على سبيل المثال:
- Go
res, _ := e.GetAllDomains()
إذا كنت تتعامل مع نطاق مثل name::domain
، فقد يؤدي ذلك إلى سلوك غير متوقع. في Casbin، ::
هي كلمة محجوزة، تمامًا مثل for
، if
في لغة برمجة، يجب ألا نضع ::
في نطاق.
GetAllRolesByDomain()
سيقوم GetAllRolesByDomain باسترجاع جميع الأدوار المرتبطة بالنطاق.
على سبيل المثال:
- Go
res := e.GetAllRolesByDomain("domain1")
هذه الطريقة لا تنطبق على النطاقات التي لديها علاقة وراثة، المعروفة أيضًا بالأدوار الضمنية.
GetImplicitUsersForResourceByDomain()
تقوم GetImplicitUsersForResourceByDomain بإرجاع المستخدمين الضمنيين بناءً على المورد والنطاق.
على سبيل المثال:
p, admin, domain1, data1, read
p, admin, domain1, data1, write
p, admin, domain2, data2, read
p, admin, domain2, data2, write
g, alice, admin, domain1
g, bob, admin, domain2
ستقوم GetImplicitUsersForResourceByDomain("data1", "domain1") بإرجاع [["alice", "domain1", "data1", "read"],["alice", "domain1", "data1", "write"]], nil
- Go
ImplicitUsers, err := e.GetImplicitUsersForResourceByDomain("data1", "domain1")
سيتم إرجاع المستخدمين فقط، الأدوار (الوسيط الثاني في "g") سيتم استثناؤها.