Zum Hauptinhalt springen

RBAC API

Eine benutzerfreundlichere API für RBAC. 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_model.conf", "examples/rbac_policy.csv")

GetRolesForUser()

GetRolesForUser erhält die Rollen, die ein Benutzer hat.

Zum Beispiel:

res := e.GetRolesForUser("alice")

GetUsersForRole()

GetUsersForRole holt die Benutzer, die eine Rolle haben.

Zum Beispiel:

res := e.GetUsersForRole("data1_admin")

HasRoleForUser()

HasRoleForUser bestimmt, ob ein Benutzer eine Rolle hat.

Zum Beispiel:

res := e.HasRoleForUser("alice", "data1_admin")

AddRoleForUser()

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

Zum Beispiel:

e.AddRoleForUser("alice", "data2_admin")

AddRolesForUser()

AddRolesForUser fügt mehrere Rollen für einen Benutzer hinzu. Gibt false zurück, wenn der Benutzer bereits eine dieser Rollen hat (aka nicht betroffen).

Zum Beispiel:

var roles = []string{"data2_admin", "data1_admin"}
e.AddRolesForUser("alice", roles)

DeleteRoleForUser()

DeleteRoleForUser löscht eine Rolle für einen Benutzer. Gibt false zurück, wenn der Benutzer nicht die Rolle hat (aka nicht betroffen).

Zum Beispiel:

e.DeleteRoleForUser("alice", "data1_admin")

DeleteRolesForUser()

DeleteRolesForUser löscht alle Rollen eines Benutzers. Gibt false zurück, wenn der Benutzer keine Rollen hat (aka nicht betroffen).

Zum Beispiel:

e.DeleteRolesForUser("alice")

DeleteUser()

Löscht Benutzer einen Benutzer. Gibt false zurück, wenn der Benutzer nicht existiert (auch nicht betroffen).

Zum Beispiel:

e.DeleteUser("alice")

DeleteRole()

Lösche Rolle löscht eine Rolle.

Zum Beispiel:

e.DeleteRole("data2_admin")

DeletePermission()

DeletePermission löscht eine Berechtigung. Gibt false zurück, wenn die Berechtigung nicht vorhanden ist (aka nicht betroffen).

Zum Beispiel:

e.DeletePermission("read")

AddPermissionForUser()

AddPermissionForUser fügt eine Berechtigung für einen Benutzer oder eine Rolle hinzu. Gibt falsch zurück, wenn der Benutzer oder die Rolle bereits die Berechtigung hat (aka nicht betroffen).

Zum Beispiel:

e.AddPermissionForUser("bob", "read")

AddPermissionsForUser()

AddPermissionsForUser fügt mehrere Berechtigungen für einen Benutzer oder eine Rolle hinzu. Gibt falsch zurück, wenn der Benutzer oder die Rolle bereits eine der Berechtigungen hat (aka nicht betroffen).

Zum Beispiel:

var permissions = [][]string{{"data1", "read"},{"data2","write"}}
for i := 0; i < len(permissions); i++ {
e.AddPermissionsForUser("alice", permissions[i])
}

DeletePermissionForUser()

DeletePermissionForUser löscht eine Berechtigung für einen Benutzer oder eine Rolle. Gibt false zurück, wenn der Benutzer oder die Rolle nicht über die Berechtigung verfügt (aka nicht betroffen).

Zum Beispiel:

e.DeletePermissionForUser("bob", "read")

DeletePermissionsForUser()

DeletePermissionsForUser löscht Berechtigungen für einen Benutzer oder eine Rolle. Gibt falsch zurück, wenn der Benutzer oder die Rolle keine Berechtigungen hat (aka nicht betroffen).

Zum Beispiel:

e.DeletePermissionsForUser("bob")

GetPermissionsForUser()

GetPermissionsForUser erhält Berechtigungen für einen Benutzer oder eine Rolle.

Zum Beispiel:

e.GetPermissionsForUser("bob")

HasPermissionForUser()

HasPermissionForUser bestimmt, ob ein Benutzer eine Berechtigung hat.

Zum Beispiel:

e.HasPermissionForUser("alice", []string{"read"})

GetImplicitRolesForUser()

GetImplicitRolesForUser erhält implizite Rollen, die ein Benutzer hat. Verglichen mit GetRolesForUser() ruft diese Funktion neben direkten Rollen indirekte Rollen ab.

Zum Beispiel:
g, alice, role:admin
g, role:admin, role:user

GetRolesForUser("alice") kann nur erhalten: ["role:admin"].
Aber GetImplicitRolesForUser("alice") bekommt: ["role:admin", "role:user"].

Zum Beispiel:

e.GetImplicitRolesForUser("alice")

GetImplicitUsersForRole()

GetImplicitUsersForRole holt alle Benutzer, die die Rolle übernehmen. Im Vergleich zu GetUsersForRole() ermittelt diese Funktion indirekte Benutzer.

Zum Beispiel:
g, alice, role:admin
g, role:admin, role:user

GetUsersForRole("role:user") kann nur erhalten: ["role:admin"].
Aber GetImplicitUesrsForRole("role:user") bekommt: ["role:admin", "alice"].

Zum Beispiel:

users := e.GetImplicitUsersForRole("role:user")

GetImplicitPermissionsForUser()

GetImplicitPermissionsForUser erhält implizite Berechtigungen für einen Benutzer oder eine Rolle.
Verglichen mit GetPermissionsForUser(), diese Funktion holt Berechtigungen für geerbte Rollen.

Beispiel:
p, admin, data1, lesen Sie
p, alice, data2, lesen Sie
g, alice, admin

GetPermissionsForUser("alice") kann nur erhalten: [["alice", "data2", "read"]].
Aber GetImplicitPermissionsForUser("alice") holt: [["admin", "data1", "read"], ["alice", "data2", "read"]].

Zum Beispiel:

e.GetImplicitPermissionsForUser("alice")

GetNamedImplicitPermissionsForUser()

GetNamedImplicitPermissionsForUser erhält implizite Berechtigungen für einen Benutzer oder eine Rolle durch benannte Richtlinie Verglichen mit GetImplicitPermissionsForUser(). Diese Funktion erlaubt es Ihnen, den Richtliniennamen anzugeben.

Beispiel: p, admin, data1, lesen Sie p2, admin, erstellen g, alice, admin

GetImplicitPermissionsForUser("alice") nur erhalten: [["admin", "data1", "read"", dessen Richtlinie "p" ist

Aber Sie können die Richtlinie als "p2" angeben, um sie zu erhalten: [["admin", "erstellen"]] von GetNamedImplicitPermissionsForUser("p2","alice")

Zum Beispiel:

e.GetNamedImplicitPermissionsForUser("p2","alice")

GetDomainsForUser()

GetDomainsForUser erhält alle Domains, die ein Benutzer hat.

Beispiel: p, admin, domain1, data1, lesen Sie p, admin, domain2, data2, lesen Sie p, admin, domain2, data2, schreiben Sie g, alice, admin, domain1 g, alice, admin, domain2

GetDomainsForUser("alice") könnte ["domain1", "domain2"] erhalten

Zum Beispiel:

result, err := e.GetDomainsForUser("alice")

GetImplicitResourcesForUser()

GetImplicitResourcesForUser gibt alle Richtlinien zurück, die für den Benutzer zutreffen sollten.

Zum Beispiel:

p, alice, data1, read
p, bob, data2, write
p, data2_admin, data2, read
p, data2_admin, data2, write

g, alice, data2_admin

GetImplicitResourcesForUser("alice") gibt [[alice data1 read] [alice data2 read] [alice data2 write]]

resources, err := e.GetImplicitResourcesForUser("alice")

GetImplicitUsersForPermission()

GetImplicitUsersForPermission gets implicit users for a permission.

For example:

p, admin, data1, read
p, bob, data1, read
g, alice, admin

GetImplicitUsersForPermission("data1", "read") will return: ["alice", "bob"].

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

users, err := e.GetImplicitUsersForPermission("data1", "read")

GetAllowedObjectConditions()

GetAllowedObjectConditions returns a string array of object conditions that the user can access.

For example:

p, alice, r.obj.price < 25, read
p, admin, r.obj.category_id = 2, read
p, bob, r.obj.author = bob, write

g, alice, admin

e.GetAllowedObjectConditions("alice", "read", "r.obj.") will return ["price < 25", "category_id = 2"], nil

Note:

  1. prefix: You can customize the prefix of the object conditions, and "r.obj." is commonly used as a prefix. After removing the prefix, the remaining part is the condition of the object. If there is an obj policy that does not meet the prefix requirement, an errors.ERR_OBJ_CONDITION will be returned.

  2. If the 'objectConditions' array is empty, return errors.ERR_EMPTY_CONDITION This error is returned because some data adapters' ORM return full table data by default when they receive an empty condition, which tends to behave contrary to expectations.(e.g. GORM) If you are using an adapter that does not behave like this, you can choose to ignore this error.

conditions, err := e.GetAllowedObjectConditions("alice", "read", "r.obj.")

GetImplicitUsersForResource()

GetImplicitUsersForResource return implicit user based on resource.

For example:

p, alice, data1, read
p, bob, data2, write
p, data2_admin, data2, read
p, data2_admin, data2, write
g, alice, data2_admin

GetImplicitUsersForResource("data2") will return [["bob", "data2", "write"], ["alice", "data2", "read"] ["alice", "data2", "write"]], nil.

GetImplicitUsersForResource("data1") will return [["alice", "data1", "read"]], nil.

ImplicitUsers, err := e.GetImplicitUsersForResource("data2")
note

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