Zum Hauptinhalt springen

RBAC with Domains API

Eine benutzerfreundlichere API für RBAC mit Domänen. Diese API ist eine Teilmenge der Management-API. RBAC-Benutzer können diese API verwenden, um ihren Code zu vereinfachen.

Referenz

Die globale Variable e repräsentiert die Enforcer-Instanz.

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

GetUsersForRoleInDomain()

Die Funktion GetUsersForRoleInDomain() ruft die Benutzer ab, die eine Rolle innerhalb einer Domäne haben.

Zum Beispiel:

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

GetRolesForUserInDomain()

Die Funktion GetRolesForUserInDomain() ruft die Rollen ab, die ein Benutzer innerhalb einer Domäne hat.

Zum Beispiel:

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

GetPermissionsForUserInDomain()

Die Funktion GetPermissionsForUserInDomain() ruft die Berechtigungen für einen Benutzer oder eine Rolle innerhalb einer Domäne ab.

Zum Beispiel:

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

AddRoleForUserInDomain()

Die Funktion AddRoleForUserInDomain() fügt einem Benutzer innerhalb einer Domäne eine Rolle hinzu. Es gibt false zurück, wenn der Benutzer die Rolle bereits hat (keine Änderungen vorgenommen).

Zum Beispiel:

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

DeleteRoleForUserInDomain()

Die Funktion DeleteRoleForUserInDomain() entfernt eine Rolle für einen Benutzer innerhalb einer Domäne. Es gibt false zurück, wenn der Benutzer die Rolle nicht hat (keine Änderungen vorgenommen).

Zum Beispiel:

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

DeleteRolesForUserInDomain()

Die Funktion DeleteRolesForUserInDomain() entfernt alle Rollen für einen Benutzer innerhalb einer Domäne. Es gibt false zurück, wenn der Benutzer keine Rollen hat (keine Änderungen vorgenommen).

Zum Beispiel:

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

GetAllUsersByDomain()

Die Funktion GetAllUsersByDomain() ruft alle Benutzer ab, die mit der angegebenen Domäne verknüpft sind. Es gibt ein leeres String-Array zurück, wenn keine Domäne im Modell definiert ist.

Zum Beispiel:

res := e.GetAllUsersByDomain("domain1")

DeleteAllUsersByDomain()

Die Funktion DeleteAllUsersByDomain() löscht alle Benutzer, die mit der angegebenen Domäne verknüpft sind. Es gibt false zurück, wenn keine Domäne im Modell definiert ist.

Zum Beispiel:

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

DeleteDomains()

DeleteDomains würde alle zugehörigen Benutzer und Rollen löschen. Es würde alle Domains löschen, wenn kein Parameter angegeben ist.

Zum Beispiel:

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

GetAllDomains()

GetAllDomains würde alle Domains abrufen.

Zum Beispiel:

res, _ := e.GetAllDomains()
notiz

Wenn Sie eine Domain wie name::domain behandeln, kann dies zu unerwartetem Verhalten führen. In Casbin ist :: ein reserviertes Schlüsselwort, genau wie for, if in einer Programmiersprache, wir sollten niemals :: in einer Domain setzen.

GetAllRolesByDomain()

GetAllRolesByDomain würde alle Rollen abrufen, die mit der Domain verknüpft sind.

Zum Beispiel:

res := e.GetAllRolesByDomain("domain1")
notiz

Diese Methode gilt nicht für Domains, die eine Vererbungsbeziehung haben, auch bekannt als implizite Rollen.

GetImplicitUsersForResourceByDomain()

GetImplicitUsersForResourceByDomain gibt impliziten Benutzer basierend auf Ressource und Domain zurück.

Zum Beispiel:

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") wird ["alice", "domain1", "data1", "read"],["alice", "domain1", "data1", "write"]], nil zurückgeben

ImplicitUsers, err := e.GetImplicitUsersForResourceByDomain("data1", "domain1")
notiz

Es werden nur Benutzer zurückgegeben, Rollen (2. Argument in "g") werden ausgeschlossen.