Zum Hauptinhalt springen

RBAC mit Domains API

Eine benutzerfreundlichere API für RBAC mit Domains. Diese API ist eine Teilmenge der Management-API. Die RBAC-Benutzer können diese API verwenden, um den Code zu vereinfachen.

Referenz

globale Variable e ist Enforcer Instanz.

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

GetUsersForRoleInDomain()

GetUsersForRoleInDomain holt die Benutzer, die eine Rolle innerhalb einer Domain haben.

Zum Beispiel:

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

GetRolesForUserInDomain()

GetRolesForUserInDomain erhält die Rollen, die ein Benutzer innerhalb einer Domain hat.

Zum Beispiel:

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

GetPermissionsForUserInDomain()

GetPermissionsForUserInDomain erhält Berechtigungen für einen Benutzer oder eine Rolle innerhalb einer Domäne.

Zum Beispiel:

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

AddRoleForUserInDomain()

AddRoleForUserInDomain fügt eine Rolle für einen Benutzer innerhalb einer Domain hinzu. Gibt false zurück, wenn der Benutzer bereits die Rolle hat (aka nicht betroffen).

Zum Beispiel:

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

DeleteRoleForUserInDomain()

DeleteRoleForUserInDomain löscht eine Rolle für einen Benutzer innerhalb einer Domäne. Gibt false zurück, wenn der Benutzer nicht die Rolle hat (aka nicht betroffen).

Zum Beispiel:

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

DeleteRolesForUserInDomain()

DeleteRolesForUserInDomain löscht alle Rollen eines Benutzers innerhalb einer Domäne. Gibt false zurück, wenn der Benutzer keine Rollen hat (aka nicht betroffen).

Zum Beispiel:

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

GetAllUsersByDomain()

GetAllUsersByDomain würde alle Benutzer erhalten, die mit der Domain verbunden sind. Gibt ein leeres String Array zurück, wenn keine Domäne im Modell definiert ist.

Zum Beispiel:

res := e.GetAllUsersByDomain("domain1")

DeleteAllUsersByDomain()

DeleteAllUsersByDomain würde alle Benutzer löschen, die dieser Domain zugeordnet sind. Gibt false zurück, wenn keine Domäne im Modell definiert ist.

Zum Beispiel:

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

DeleteDomains()

DeleteDomains würden alle zugehörigen Benutzer und Rollen löschen. Es würde alle Domänen löschen, wenn kein Parameter angegeben wird.

Zum Beispiel:

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

GetAllDomains()

GetAllDomains würde alle Domains bekommen.

Zum Beispiel:

res, _ := e.GetAllDomains()
note

Wenn Sie eine Domain wie name::domainbehandeln, kann dies zu unerwartetem Verhalten führen. In Kasbin, :: ist ein umgekehrtes Schlüsselwort, genau wie für, wenn in einer Programmiersprache ist, sollten wir niemals :: in eine Domain setzen.

GetImplicitUsersForResourceByDomain()

GetImplicitUsersForResourceByDomain return implicit user based on resource and domain.

For example:

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") will return [["alice", "domain1", "data1", "read"],["alice", "domain1", "data1", "write"]], nil

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

Only users will be returned, roles (2nd arg in "g") will be excluded.