Passer au contenu principal

API de gestion

L'API primitive qui fournit un support complet pour la gestion des politiques de Casbin.

API filtrée

Presque toutes les api filtrées ont les mêmes paramètres (fieldIndex int, fieldValues ...string). fieldIndex est l'index où commence la correspondance, fieldValues indique les valeurs résultat doivent avoir. Notez que la chaîne vide dans les valeurs du champ peut être n'importe quel mot.

Exemple:

p, alice, livre, lire
p, bob, livre, lire
p, bob, livre, écrire
p, alice, stylo, get
p, bob, stylo ,get
e.GetFilteredPolicy(1, "book") // retournera : [[alice book read] [bob book read] [bob book write]]

e. etFilteredPolicy(1, "book", "read") // retournera : [[alice book read] [bob book read]]

e. etFilteredPolicy(0, "alice", "", "read") // retournera : [[alice book read]]

e.GetFilteredPolicy(0, "alice") // retournera : [[alice book read] [alice pen get]]

Référence

la variable globale e est l'instance Enforcer .

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

Enforce()

Enforce décide si un "sujet" peut accéder à un "objet" avec l'opération "action", les paramètres d'entrée sont généralement : (sub, obj, act).

Par exemple :

ok, err := e.Enforce(request)

EnforceWithMatcher()

EnforceWithMatcher utilise un matcher personnalisé pour décider si un "sujet" peut accéder à un "objet" avec l'opération "action", les paramètres d'entrée sont généralement : (matcher, sub, obj, act), utiliser le modèle de correspondance par défaut lorsque le matcher est "".

Par exemple :

ok, err := e.EnforceWithMatcher(matcher, request)

EnforceEx()

EnforceEx explique l'application en informant les règles correspondantes.

Par exemple :

ok, reason, err := e.EnforceEx(request)

EnforceExWithMatcher()

EnforceExWithMatcher utilise un matcher personnalisé et explique l'application en informant les règles correspondantes.

Par exemple :

ok, reason, err := e.EnforceExWithMatcher(matcher, request)

BatchEnforce()

BatchEnforce exécute chaque requête et renvoie un tableau bool

Par exemple :

boolArray, err := e.BatchEnforce(requests)

GetAllSubjects()

GetAllSubjects obtient la liste des sujets qui apparaissent dans la politique actuelle.

Par exemple :

allSubjects := e.GetAllSubjects()

GetAllNamedSubjects()

GetAllNamedSubjects récupère la liste des sujets qui apparaissent dans la politique actuelle nommée.

Par exemple :

allNamedSubjects := e.GetAllNamedSubjects("p")

GetAllObjects()

GetAllObjects récupère la liste des objets qui apparaissent dans la politique actuelle.

Par exemple :

allObjects := e.GetAllObjects()

GetAllNamedObjects()

GetAllNamedObjects récupère la liste des objets qui apparaissent dans la politique actuelle nommée.

Par exemple :

allNamedObjects := e.GetAllNamedObjects("p")

GetAllActions()

GetAllActions obtient la liste des actions qui apparaissent dans la politique actuelle.

Par exemple :

allActions := e.GetAllActions()

GetAllNamedActions()

GetAllNamedActions obtient la liste des actions qui s'affichent dans la politique actuelle nommée.

Par exemple :

allNamedActions := e.GetAllNamedActions("p")

GetAllRoles()

GetAllRoles obtient la liste des rôles qui apparaissent dans la politique actuelle.

Par exemple :

allRoles = e.GetAllRoles()

GetAllNamedRoles()

GetAllNamedRoles obtient la liste des rôles qui apparaissent dans la politique actuelle nommée.

Par exemple :

allNamedRoles := e.GetAllNamedRoles("g")

GetPolicy()

GetPolicy obtient toutes les règles d'autorisation dans la politique.

Par exemple :

policy = e.GetPolicy()

GetFilteredPolicy()

GetFilteredPolicy récupère toutes les règles d'autorisation dans la politique, les filtres de champs peuvent être spécifiés.

Par exemple :

filteredPolicy := e.GetFilteredPolicy(0, "alice")

GetNamedPolicy()

GetNamedPolicy récupère toutes les règles d'autorisation dans la politique nommée.

Par exemple :

namedPolicy := e.GetNamedPolicy("p")

GetFilteredNamedPolicy()

GetFilteredNamedPolicy récupère toutes les règles d'autorisation dans la politique nommée, les filtres de champs peuvent être spécifiés.

Par exemple :

filteredNamedPolicy = e.GetFilteredNamedPolicy("p", 0, "bob")

GetGroupingPolicy()

GetGroupingPolicy récupère toutes les règles d'héritage de rôle dans la politique.

Par exemple :

groupingPolicy := e.GetGroupingPolicy()

GetFilteredGroupingPolicy()

GetFilteredGroupingPolicy récupère toutes les règles d'héritage de rôle dans la politique, les filtres de champs peuvent être spécifiés.

Par exemple :

filteredGroupingPolicy := e.GetFilteredGroupingPolicy(0, "alice")

GetNamedGroupingPolicy()

GetNamedGroupingPolicy récupère toutes les règles d'héritage de rôle dans la politique.

Par exemple :

namedGroupingPolicy := e.GetNamedGroupingPolicy("g")

GetFilteredNamedGroupingPolicy()

GetFilteredNamedGroupingPolicy récupère toutes les règles d'héritage de rôle dans la politique.

Par exemple :

namedGroupingPolicy := e.GetFilteredNamedGroupingPolicy("g", 0, "alice")

HasPolicy()

HasPolicy détermine si une règle d'autorisation existe.

Par exemple :

hasPolicy := e.HasPolicy("data2_admin", "data2", "read")

HasNamedPolicy()

HasNamedPolicy détermine si une règle d'autorisation nommée existe.

Par exemple :

hasNamedPolicy := e.HasNamedPolicy("p", "data2_admin", "data2", "read")

AddPolicy()

AddPolicy ajoute une règle d'autorisation à la politique actuelle. Si la règle existe déjà, la fonction retourne false et la règle ne sera pas ajoutée. Sinon, la fonction retourne true en ajoutant la nouvelle règle.

Par exemple :

added := e.AddPolicy('eve', 'data3', 'read')

AddPolicies()

AddPolicies ajoute des règles d'autorisation à la politique actuelle. L'opération est de nature atomique. Par conséquent, si les règles d'autorisation se composent de règles qui ne sont pas compatibles avec la politique actuelle, la fonction retourne false et aucune règle de régulation n'est ajoutée à la police courante. Si toutes les règles d'autorisation sont conformes aux règles de la police, la fonction renvoie la vraie et chaque règle de politique est ajoutée à la politique actuelle.

Par exemple :

rules := [][] string {
[]string {"jack", "data4", "read"},
[]string {"katy", "data4", "write"},
[]string {"leyo", "data4", "read"},
[]string {"ham", "data4", "write"},
}

areRulesAdded := e.AddPolicies(rules)

AddPoliciesEx()

AddPoliciesEx adds authorization rules to the current policy. If the rule already exists, the rule will not be added. But unlike AddPolicies, other non-existent rules are added instead of returning false directly

Par exemple :

ok, err := e.AddPoliciesEx([][]string{{"user1", "data1", "read"}, {"user2", "data2", "read"}})

AddNamedPolicy()

AddNamedPolicy ajoute une règle d'autorisation à la politique courante. Si la règle existe déjà, la fonction retourne false et la règle ne sera pas ajoutée. Sinon, la fonction retourne true en ajoutant la nouvelle règle.

Par exemple :

added := e.AddNamedPolicy("p", "eve", "data3", "read")

AddNamedPolicies()

AddNamedPolicies ajoute des règles d'autorisation à la politique courante. L'opération est de nature atomique. Par conséquent, si les règles d'autorisation se composent de règles qui ne sont pas compatibles avec la politique actuelle, la fonction retourne false et aucune règle de régulation n'est ajoutée à la police courante. Si toutes les règles d'autorisation sont conformes aux règles de la police, la fonction renvoie la vraie et chaque règle de politique est ajoutée à la politique actuelle.

Par exemple :

rules := [][] string {
[]string {"jack", "data4", "read"},
[]string {"katy", "data4", "write"},
[]string {"leyo", "data4", "read"},
[]string {"ham", "data4", "write"},
}

areRulesAdded := e.AddNamedPolicies("p", rules)

AddNamedPoliciesEx()

AddNamedPoliciesEx adds authorization rules to the current named policy. If the rule already exists, the rule will not be added. But unlike AddNamedPolicies, other non-existent rules are added instead of returning false directly

Par exemple :

ok, err := e.AddNamedPoliciesEx("p", [][]string{{"user1", "data1", "read"}, {"user2", "data2", "read"}})

SelfAddPoliciesEx()

SelfAddPoliciesEx adds authorization rules to the current named policy with autoNotifyWatcher disabled. If the rule already exists, the rule will not be added. But unlike SelfAddPolicies, other non-existent rules are added instead of returning false directly

Par exemple :

ok, err := e.SelfAddPoliciesEx("p", "p", [][]string{{"user1", "data1", "read"}, {"user2", "data2", "read"}})

RemovePolicy()

RemovePolicy supprime une règle d'autorisation de la politique actuelle.

Par exemple :

removed := e.RemovePolicy("alice", "data1", "read")

RemovePolicies()

RemovePolicies supprime les règles d'autorisation de la politique actuelle. L'opération est de nature atomique. Par conséquent, si les règles d'autorisation se composent de règles qui ne sont pas compatibles avec la politique actuelle, la fonction retourne false et aucune règle de régulation n'est retirée de la charte courante. Si toutes les règles d'autorisation sont conformes aux règles de la police, la fonction renvoie la vraie et chaque règle de politique est retirée de la politique actuelle.

Par exemple :

rules := [][] string {
[]string {"jack", "data4", "read"},
[]string {"katy", "data4", "write"},
[]string {"leyo", "data4", "read"},
[]string {"ham", "data4", "write"},
}

areRulesRemoved := e.RemovePolicies(rules)

RemoveFilteredPolicy()

RemoveFilteredPolicy supprime une règle d'autorisation de la politique actuelle, les filtres de champs peuvent être spécifiés. RemovePolicy supprime une règle d'autorisation de la politique actuelle.

Par exemple :

removed := e.RemoveFilteredPolicy(0, "alice", "data1", "read")

RemoveNamedPolicy()

RemoveNamedPolicy supprime une règle d'autorisation de la charte nommée courante.

Par exemple :

removed := e.RemoveNamedPolicy("p", "alice", "data1", "read")

RemoveNamedPolicies()

RemoveNamedPolicy supprime les règles d'autorisation de la politique actuelle nommée. L'opération est de nature atomique. Par conséquent, si les règles d'autorisation se composent de règles qui ne sont pas compatibles avec la politique actuelle, la fonction retourne false et aucune règle de régulation n'est retirée de la charte courante. Si toutes les règles d'autorisation sont conformes aux règles de la police, la fonction renvoie la vraie et chaque règle de politique est retirée de la politique actuelle.

Par exemple :

rules := [][] string {
[]string {"jack", "data4", "read"},
[]string {"katy", "data4", "write"},
[]string {"leyo", "data4", "read"},
[]string {"ham", "data4", "write"},
}

areRulesRemoved := e.RemoveNamedPolicies("p", rules)

RemoveFilteredNamedPolicy()

RemoveFilteredNamedPolicy supprime une règle d'autorisation de la charte nommée, les filtres de champs peuvent être spécifiés.

Par exemple :

removed := e.RemoveFilteredNamedPolicy("p", 0, "alice", "data1", "read")

HasGroupingPolicy()

HasGroupingPolicy détermine si une règle d'héritage de rôle existe.

Par exemple :

has := e.HasGroupingPolicy("alice", "data2_admin")

HasNamedGroupingPolicy()

HasNamedGroupingPolicy détermine si une règle d'héritage de rôle nommée existe.

Par exemple :

has := e.HasNamedGroupingPolicy("g", "alice", "data2_admin")

AddGroupingPolicy()

AddGroupingPolicy ajoute une règle d'héritage de rôle à la politique actuelle. Si la règle existe déjà, la fonction retourne false et la règle ne sera pas ajoutée. Sinon, la fonction retourne true en ajoutant la nouvelle règle.

Par exemple :

added := e.AddGroupingPolicy("group1", "data2_admin")

AddGroupingPolicies()

AddGroupingPolicies ajoute des règles d'héritage de rôle à la politique actuelle. L'opération est de nature atomique. Par conséquent, si les règles d'autorisation se composent de règles qui ne sont pas compatibles avec la politique actuelle, la fonction retourne false et aucune règle de régulation n'est ajoutée à la police courante. Si toutes les autorisations sont conformes aux règles de la police, la fonction renvoie vraie, et chaque règle de politique est ajoutée à la politique actuelle.

Par exemple :

rules := [][] string {
[]string {"ham", "data4_admin"},
[]string {"jack", "data5_admin"},
}

areRulesAdded := e.AddGroupingPolicies(rules)

AddGroupingPoliciesEx()

AddGroupingPoliciesEx adds role inheritance rules to the current policy. If the rule already exists, the rule will not be added. But unlike AddGroupingPolicies, other non-existent rules are added instead of returning false directly

Par exemple :

ok, err := e.AddGroupingPoliciesEx([][]string{{"user1", "member"}, {"user2", "member"}})

AddNamedGroupingPolicy()

AddNamedGroupingPolicy ajoute une règle d'héritage de rôle nommée à la politique actuelle. Si la règle existe déjà, la fonction retourne false et la règle ne sera pas ajoutée. Sinon, la fonction retourne true en ajoutant la nouvelle règle.

Par exemple :

added := e.AddNamedGroupingPolicy("g", "group1", "data2_admin")

AddNamedGroupingPolicies()

AddNamedGroupingPolicies ajoute des règles d'héritage de rôle nommées à la politique actuelle. L'opération est de nature atomique. Par conséquent, si les règles d'autorisation se composent de règles qui ne sont pas compatibles avec la politique actuelle, la fonction retourne false et aucune règle de régulation n'est ajoutée à la police courante. Si toutes les règles d'autorisation sont conformes aux règles de la police, la fonction renvoie la vraie et chaque règle de politique est ajoutée à la politique actuelle.

Par exemple :

rules := [][] string {
[]string {"ham", "data4_admin"},
[]string {"jack", "data5_admin"},
}

areRulesAdded := e.AddNamedGroupingPolicies("g", rules)

AddNamedGroupingPoliciesEx()

AddNamedGroupingPoliciesEx adds named role inheritance rules to the current policy. If the rule already exists, the rule will not be added. But unlike AddNamedGroupingPolicies, other non-existent rules are added instead of returning false directly

Par exemple :

ok, err := e.AddNamedGroupingPoliciesEx("g", [][]string{{"user1", "member"}, {"user2", "member"}})

RemoveGroupingPolicy()

RemoveGroupingPolicy supprime une règle d'héritage de rôle de la politique actuelle.

Par exemple :

removed := e.RemoveGroupingPolicy("alice", "data2_admin")

RemoveGroupingPolicies()

RemoveGroupingPolicies supprime les règles d'héritage de rôle de la politique actuelle. L'opération est de nature atomique. Par conséquent, si les règles d'autorisation se composent de règles qui ne sont pas compatibles avec la politique actuelle, la fonction retourne false et aucune règle de régulation n'est retirée de la charte courante. Si toutes les règles d'autorisation sont conformes aux règles de la police, la fonction renvoie la vraie et chaque règle de politique est retirée de la politique actuelle.

Par exemple :

rules := [][] string {
[]string {"ham", "data4_admin"},
[]string {"jack", "data5_admin"},
}

areRulesRemoved := e.RemoveGroupingPolicies(rules)

RemoveFilteredGroupingPolicy()

RemoveFilteredGroupingPolicy supprime une règle d'héritage de rôle de la règle actuelle, les filtres de champs peuvent être spécifiés.

Par exemple :

removed := e.RemoveFilteredGroupingPolicy(0, "alice")

RemoveNamedGroupingPolicy()

RemoveNamedGroupingPolicy supprime une règle d'héritage de rôle de la politique nommée actuelle.

Par exemple :

removed := e.RemoveNamedGroupingPolicy("g", "alice")

RemoveNamedGroupingPolicies()

RemoveNamedGroupingPolicies supprime les règles d'héritage de rôle nommées de la politique actuelle. L'opération est de nature atomique. Par conséquent, si les règles d'autorisation se composent de règles qui ne sont pas compatibles avec la politique actuelle, la fonction retourne false et aucune règle de régulation n'est retirée de la charte courante. Si toutes les règles d'autorisation sont conformes aux règles de la police, la fonction renvoie la vraie et chaque règle de politique est retirée de la politique actuelle.

Par exemple :

rules := [][] string {
[]string {"ham", "data4_admin"},
[]string {"jack", "data5_admin"},
}

areRulesRemoved := e.RemoveNamedGroupingPolicies("g", rules)

RemoveFilteredNamedGroupingPolicy()

RemoveFilteredNamedGroupingPolicy supprime une règle d'héritage de rôle de la politique nommée, les filtres de champs peuvent être spécifiés.

Par exemple :

removed := e.RemoveFilteredNamedGroupingPolicy("g", 0, "alice")

UpdatePolicy()

Mettre à jour une ancienne politique vers une nouvelle politique.

Par exemple :

updated, err := e.UpdatePolicy([]string{"eve", "data3", "read"}, []string{"eve", "data3", "write"})

UpdatePolicies()

Mise à jour des politiques met à jour toutes les anciennes politiques vers de nouvelles politiques.

Par exemple :

updated, err := e.UpdatePolicies([][]string{{"eve", "data3", "read"}, {"jack", "data3", "read"}}, [][]string{{"eve", "data3", "write"}, {"jack", "data3", "write"}})

AddFunction()

AddFunction ajoute une fonction personnalisée.

For example:

func CustomFunction(key1 string, key2 string) bool {
if key1 == "/alice_data2/myid/using/res_id" && key2 == "/alice_data/:resource" {
return true
} else if key1 == "/alice_data2/myid/using/res_id" && key2 == "/alice_data2/:id/using/:resId" {
return true
} else {
return false
}
}

func CustomFunctionWrapper(args ...interface{}) (interface{}, error) {
key1 := args[0].(string)
key2 := args[1].(string)

return bool(CustomFunction(key1, key2)), nil
}

e.AddFunction("keyMatchCustom", CustomFunctionWrapper)

LoadFilteredPolicy()

LoadFilteredPolicy charge les règles filtrées à partir de fichier/base de données.

For example:

err := e.LoadFilteredPolicy()

LoadIncrementalFilteredPolicy()

LoadIncrementalFilteredPolicy ajoute une charte filtrée à partir de fichier/base de données.

For example:

err := e.LoadIncrementalFilteredPolicy()

UpdateGroupingPolicy()

UpdateGroupingPolicy met à jour l'ancienne règle vers la nouvelle section g

For example:

succeed, err : = e.UpdateGroupingPolicy([]string{"data3_admin", "data4_admin"}, []string{"admin", "data4_admin"})

UpdateNamedGroupingPolicy()

UpdateNamedGroupingPolicy met à jour l'ancienne règle nommée ptype à la section newRulein g

For example:

succeed, err : = e.UpdateGroupingPolicy("g1",[]string{"data3_admin", "data4_admin"}, []string{"admin", "data4_admin"})

SetFieldIndex()

SetFieldIndex suport customization of conventional name and position of sub, obj, domain and priority.

[policy_definition]
p = customized_priority, obj, act, eft, subject

For example:

e.SetFieldIndex("p", constant.PriorityIndex, 0)
e.SetFieldIndex("p", constant.SubjectIndex, 4)