التخطي إلى المحتوى الرئيسي

RBAC with Domains API

واجهة برمجة تطبيقات أكثر سهولة في الاستخدام لـ RBAC مع النطاقات. هذه الواجهة هي مجموعة فرعية من واجهة إدارة API. يمكن لمستخدمي RBAC استخدام هذه الواجهة لتبسيط الكود الخاص بهم.

مرجع

المتغير العالمي e يمثل مثيل Enforcer.

e, err := NewEnforcer("examples/rbac_with_domains_model.conf", "examples/rbac_with_domains_policy.csv")

GetUsersForRoleInDomain()

تقوم الدالة GetUsersForRoleInDomain() باسترجاع المستخدمين الذين لديهم دور ضمن نطاق معين.

على سبيل المثال:

res := e.GetUsersForRoleInDomain("admin", "domain1")

GetRolesForUserInDomain()

تقوم الدالة GetRolesForUserInDomain() باسترجاع الأدوار التي يمتلكها مستخدم ضمن نطاق معين.

على سبيل المثال:

res := e.GetRolesForUserInDomain("admin", "domain1")

GetPermissionsForUserInDomain()

تقوم الدالة GetPermissionsForUserInDomain() باسترجاع الأذونات لمستخدم أو دور ضمن نطاق معين.

على سبيل المثال:

res := e.GetPermissionsForUserInDomain("alice", "domain1")

AddRoleForUserInDomain()

تقوم الدالة AddRoleForUserInDomain() بإضافة دور لمستخدم ضمن نطاق معين. تعيد false إذا كان المستخدم يمتلك الدور بالفعل (لم يتم إجراء تغييرات).

على سبيل المثال:

ok, err := e.AddRoleForUserInDomain("alice", "admin", "domain1")

DeleteRoleForUserInDomain()

تقوم الدالة DeleteRoleForUserInDomain() بإزالة دور لمستخدم ضمن نطاق معين. تعيد false إذا لم يكن المستخدم يمتلك الدور (لم يتم إجراء تغييرات).

على سبيل المثال:

ok, err := e.DeleteRoleForUserInDomain("alice", "admin", "domain1")

DeleteRolesForUserInDomain()

تقوم الدالة DeleteRolesForUserInDomain() بإزالة جميع الأدوار لمستخدم ضمن نطاق معين. تعيد false إذا لم يكن المستخدم يمتلك أي أدوار (لم يتم إجراء تغييرات).

على سبيل المثال:

ok, err := e.DeleteRolesForUserInDomain("alice", "domain1")

GetAllUsersByDomain()

تقوم الدالة GetAllUsersByDomain() باسترجاع جميع المستخدمين المرتبطين بالنطاق المعطى. تعيد مصفوفة سلاسل فارغة إذا لم يتم تعريف نطاق في النموذج.

على سبيل المثال:

res := e.GetAllUsersByDomain("domain1")

DeleteAllUsersByDomain()

تقوم الدالة DeleteAllUsersByDomain() بحذف جميع المستخدمين المرتبطين بالنطاق المعطى. تعيد false إذا لم يتم تعريف نطاق في النموذج.

على سبيل المثال:

ok, err := e.DeleteAllUsersByDomain("domain1")

DeleteDomains()

سيؤدي DeleteDomains إلى حذف جميع المستخدمين والأدوار المرتبطة. سيؤدي إلى حذف جميع النطاقات إذا لم يتم توفير معامل.

على سبيل المثال:

ok, err := e.DeleteDomains("domain1", "domain2")

GetAllDomains()

سيقوم GetAllDomains باسترجاع جميع النطاقات.

على سبيل المثال:

res, _ := e.GetAllDomains()
ملاحظة

إذا كنت تتعامل مع نطاق مثل name::domain، فقد يؤدي ذلك إلى سلوك غير متوقع. في Casbin، :: هي كلمة محجوزة، تمامًا مثل for، if في لغة برمجة، يجب ألا نضع :: في نطاق.

GetAllRolesByDomain()

سيقوم GetAllRolesByDomain باسترجاع جميع الأدوار المرتبطة بالنطاق.

على سبيل المثال:

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

ImplicitUsers, err := e.GetImplicitUsersForResourceByDomain("data1", "domain1")
ملاحظة

سيتم إرجاع المستخدمين فقط، الأدوار (الوسيط الثاني في "g") سيتم استثناؤها.