Passer au contenu principal

RBAC with Domains API

Une API plus conviviale pour RBAC avec des domaines. Cette API est un sous-ensemble de l'API de gestion. Les utilisateurs RBAC peuvent utiliser cette API pour simplifier leur code.

Référence

La variable globale e représente l'instance Enforcer.

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

GetUsersForRoleInDomain()

La fonction GetUsersForRoleInDomain() récupère les utilisateurs qui ont un rôle dans un domaine.

Par exemple :

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

GetRolesForUserInDomain()

La fonction GetRolesForUserInDomain() récupère les rôles qu'un utilisateur a dans un domaine.

Par exemple :

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

GetPermissionsForUserInDomain()

La fonction GetPermissionsForUserInDomain() récupère les permissions pour un utilisateur ou un rôle dans un domaine.

Par exemple :

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

AddRoleForUserInDomain()

La fonction AddRoleForUserInDomain() ajoute un rôle pour un utilisateur dans un domaine. Elle renvoie false si l'utilisateur a déjà le rôle (aucun changement effectué).

Par exemple :

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

DeleteRoleForUserInDomain()

La fonction DeleteRoleForUserInDomain() supprime un rôle pour un utilisateur dans un domaine. Elle renvoie false si l'utilisateur n'a pas le rôle (aucun changement effectué).

Par exemple :

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

DeleteRolesForUserInDomain()

La fonction DeleteRolesForUserInDomain() supprime tous les rôles pour un utilisateur dans un domaine. Elle renvoie false si l'utilisateur n'a aucun rôle (aucun changement effectué).

Par exemple :

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

GetAllUsersByDomain()

La fonction GetAllUsersByDomain() récupère tous les utilisateurs associés au domaine donné. Elle renvoie un tableau de chaînes de caractères vide si aucun domaine n'est défini dans le modèle.

Par exemple :

res := e.GetAllUsersByDomain("domain1")

DeleteAllUsersByDomain()

La fonction DeleteAllUsersByDomain() supprime tous les utilisateurs associés au domaine donné. Elle renvoie false si aucun domaine n'est défini dans le modèle.

Par exemple :

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

DeleteDomains()

DeleteDomains supprimerait tous les utilisateurs et rôles associés. Il supprimerait tous les domaines si aucun paramètre n'est fourni.

Par exemple :

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

GetAllDomains()

GetAllDomains obtiendrait tous les domaines.

Par exemple :

res, _ := e.GetAllDomains()
note

Si vous manipulez un domaine comme name::domain, cela peut entraîner un comportement inattendu. Dans Casbin, :: est un mot-clé réservé, tout comme for, if dans un langage de programmation, nous ne devrions jamais mettre :: dans un domaine.

GetAllRolesByDomain()

GetAllRolesByDomain obtiendrait tous les rôles associés au domaine.

Par exemple :

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

Cette méthode ne s'applique pas aux domaines qui ont une relation d'héritage, également connus sous le nom de rôles implicites.

GetImplicitUsersForResourceByDomain()

GetImplicitUsersForResourceByDomain renvoie l'utilisateur implicite en fonction de la ressource et du domaine.

Par exemple :

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

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

Seuls les utilisateurs seront renvoyés, les rôles (2ème argument dans "g") seront exclus.