Passer au contenu principal

RBAC API

Une API plus conviviale pour RBAC. Cette API est un sous-ensemble de Management API. Les utilisateurs de RBAC peuvent utiliser cette API pour simplifier le code.

Référence​

la variable globale e est l'instance Enforcer .

e, err := NewEnforcer("examples/rbac_model.conf", "examples/rbac_policy.csv")

GetRolesForUser()​

GetRolesForUser obtient les rôles d'un utilisateur.

Par exemple :

res := e.GetRolesForUser("alice")

GetUsersForRole()​

GetUsersForRole récupère les utilisateurs qui ont un rôle.

Par exemple :

res := e.GetUsersForRole("data1_admin")

HasRoleForUser()​

HasRoleForUser détermine si un utilisateur a un rôle.

Par exemple :

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

AddRoleForUser()​

AddRoleForUser ajoute un rôle pour un utilisateur. Renvoie false si l'utilisateur a déjà le rôle (aka non affecté).

Par exemple :

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

AddRolesForUser()​

AddRolesForUser ajoute plusieurs rôles pour un utilisateur. Renvoie false si l'utilisateur a déjà un de ces rôles (aka non affecté).

Par exemple :

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

DeleteRoleForUser()​

Supprimer ce rôleForUser supprime un rôle pour un utilisateur. Renvoie false si l'utilisateur n'a pas le rôle (aka non affecté).

Par exemple :

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

DeleteRolesForUser()​

Supprimer les RolesForUser de tous les rôles d'un utilisateur. Renvoie false si l'utilisateur n'a aucun rôle (aka non affecté).

Par exemple :

e.DeleteRolesForUser("alice")

DeleteUser()​

Supprimer un utilisateur Renvoie false si l'utilisateur n'existe pas (aka non affecté).

Par exemple :

e.DeleteUser("alice")

DeleteRole()​

Supprimer un rôle

Par exemple :

e.DeleteRole("data2_admin")

DeletePermission()​

DeletePermission supprime une permission. Renvoie false si la permission n'existe pas (aka non affecté).

Par exemple :

e.DeletePermission("read")

AddPermissionForUser()​

AddPermissionForUser ajoute une permission pour un utilisateur ou un rôle. Renvoie false si l'utilisateur ou le rôle a déjà la permission (aka non affecté).

Par exemple :

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

AddPermissionsForUser()​

AddPermissionsForUser ajoute plusieurs permissions pour un utilisateur ou un rôle. Renvoie false si l'utilisateur ou le rôle a déjà une des permissions (aka non affecté).

Par exemple :

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

DeletePermissionForUser()​

Supprimer PermissionForUser supprime une permission pour un utilisateur ou un rôle. Renvoie false si l'utilisateur ou le rôle n'a pas la permission (aka non affecté).

Par exemple :

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

DeletePermissionsForUser()​

Supprimer les permissions pour l'utilisateur ou le rôle. Retourne false si l'utilisateur ou le rôle n'a pas les permissions (aka non affecté).

Par exemple :

e.DeletePermissionsForUser("bob")

GetPermissionsForUser()​

GetPermissionsForUser obtient les autorisations pour un utilisateur ou un rôle.

Par exemple :

e.GetPermissionsForUser("bob")

HasPermissionForUser()​

HasPermissionForUser détermine si un utilisateur a une permission.

Par exemple :

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

GetImplicitRolesForUser()​

GetImplicitRolesForUser obtient des rôles implicites qu'un utilisateur possède. Comparée à GetRolesForUser(), cette fonction récupère les rôles indirects en plus des rôles directs.

Par exemple :
g, alice, role:admin
g, role:admin, rôle:user

GetRolesForUser("alice") ne peut obtenir que : ["role:admin"].
Mais GetImplicitRolesForUser("alice") obtiendra : ["role:admin", "role:user"].

Par exemple :

e.GetImplicitRolesForUser("alice")

GetImplicitUsersForRole()​

GetImplicitUsersForRole permet à tous les utilisateurs d'hériter du rôle. Comparée à GetUsersForRole(), cette fonction récupère les utilisateurs indirects.

Par exemple :
g, alice, role:admin
g, role:admin, rôle:user

GetUsersForRole("role:user") ne peut obtenir que : ["role:admin"].
Mais GetImplicitUesrsForRole("role:user") obtiendra : ["role:admin", "alice"].

Par exemple :

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

GetImplicitPermissionsForUser()​

GetImplicitPermissionsForUser obtient des permissions implicites pour un utilisateur ou un rôle.
Comparé à GetPermissionsForUser(), cette fonction récupère les permissions pour les rôles hérités.

Par exemple :
p, admin, data1, read
p, alice, data2, read
g, alice, admin

GetPermissionsForUser("alice") ne peut obtenir que : [["alice", "data2", "read"]].
Mais GetImplicitPermissionsForUser("alice") obtiendra : [["admin", "data1", "read"], ["alice", "data2", "read"]].

Par exemple :

e.GetImplicitPermissionsForUser("alice")

GetNamedImplicitPermissionsForUser()​

GetNamedImplicitPermissionsForUser obtient des permissions implicites pour un utilisateur ou un rôle par la politique nommée Comparée à GetImplicitPermissionsForUser(), cette fonction vous permet de spécifier le nom de la politique.

Par exemple : p, admin, data1, read p2, admin, create g, alice, admin

GetImplicitPermissionsForUser("alice") n'obtient que : [["admin", "data1", "read"]], dont la politique est par défaut "p"

Mais vous pouvez spécifier la politique comme "p2" pour obtenir : [["admin", "create"]] par GetNamedImplicitPermissionsForUser("p2","alice")

Par exemple :

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

GetDomainsForUser()​

GetDomainsForUser récupère tous les domaines qu'un utilisateur possède.

Par exemple : p, admin, domain1, data1, read p, admin, domain2, data2, read p, admin, domain2, data2, écrire g, alice, admin, domain1 g, alice, admin, domain2

GetDomainsForUser("alice") pourrait obtenir ["domain1", "domain2"]

Par exemple :

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

GetImplicitResourcesForUser()​

GetImplicitResourcesForUser renvoie toutes les politiques qui devraient être vraies pour l'utilisateur.

Par exemple :

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

g, alice, data2_admin

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

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