Casbin

Casbin

  • Docs
  • API
  • Editor
  • IDE Plugins
  • Single Sign-On (SSO)
  • Forum
  • Help
  • Blog
  • Pricing
  • Contact Sales
  • Languages iconEnglish
    • 中文
    • 한국어
    • Русский
    • Français
    • Deutsch
    • 日本語
    • Help Translate
  • GitHub

›API

The Basics

  • Overview
  • Get Started
  • How it Works
  • Tutorials

Model

  • Supported Models
  • Syntax for Models
  • Effector
  • Function
  • RBAC
  • RBAC with Pattern
  • RBAC with Domains
  • Casbin RBAC v.s. RBAC96
  • ABAC
  • Priority Model
  • Super Admin

Storage

  • Model Storage
  • Policy Storage
  • Policy Subset Loading

Extensions

  • Enforcers
  • Adapters
  • Watchers
  • Dispatchers
  • Role Managers
  • Middlewares
  • GraphQL Middlewares
  • Cloud Native Middlewares

API

  • API Overview
  • Management API
  • RBAC API
  • RBAC with Domains API
  • RoleManager API
  • Data Permissions

Advanced Usage

  • Multi-threading
  • Benchmarks
  • Performance Optimization
  • Authorization of Kubernetes
  • Authorization of Service Mesh through Envoy

Management

  • Admin Portal
  • Casbin Service
  • Log & Error Handling
  • Frontend Usage

Editor

  • Online Editor
  • IDE Plugins

More

  • Our Adopters
  • Contributing
  • Privacy Policy
  • Terms of Service
Edit

RoleManager API

RoleManager

RoleManager provides interface to define the operations for managing roles. Adding matching function to rolemanager allows using wildcards in role name and domain.

AddNamedMatchingFunc()

AddNamedMatchingFunc add MatchingFunc by ptype RoleManager. MatchingFunc will work when operating role matching.

Go
Node.js
    e.AddNamedMatchingFunc("g", "", util.KeyMatch)
_, _ = e.AddGroupingPolicies([][]string{{"*", "admin", "domain1"}})
_, _ = e.GetRoleManager().HasLink("bob", "admin", "domain1") // -> true, nil
    await e.addNamedMatchingFunc('g', Util.keyMatchFunc);
await e.addGroupingPolicies([['*', 'admin', 'domain1']]);
await e.getRoleManager().hasLink('bob', 'admin', 'domain1');

For example:

Go
Node.js
    e, _ := casbin.NewEnforcer("path/to/model", "path/to/policy")
e.AddNamedMatchingFunc("g", "", util.MatchKey)
    const e = await newEnforcer('path/to/model', 'path/to/policy');
await e.addNamedMatchingFunc('g', Util.keyMatchFunc);

AddNamedDomainMatchingFunc()

AddNamedDomainMatchingFunc add MatchingFunc by ptype to RoleManager. DomainMatchingFunc is similar to MatchingFunc listed above.

For example:

Go
Node.js
    e, _ := casbin.NewEnforcer("path/to/model", "path/to/policy")
e.AddNamedDomainMatchingFunc("g", "", util.MatchKey)
    const e = await newEnforcer('path/to/model', 'path/to/policy');
await e.addNamedDomainMatchingFunc('g', Util.keyMatchFunc);

GetRoleManager()

GetRoleManager gets the current role manager for g.

For example:

Go
Node.js
Python
    rm := e.GetRoleManager()
    const rm = await e.getRoleManager();
    rm = e.get_role_manager()

Clear()

Clear clears all stored data and resets the role manager to the initial state.

For example:

Go
Node.js
Python
    rm.Clear()
    await rm.clear();
    rm.clear()

AddLink()

AddLink adds the inheritance link between two roles. role: name1 and role: name2. Domain is a prefix to the roles (can be used for other purposes).

For example:

Go
Node.js
Python
    rm.AddLink("u1", "g1", "domain1")
    await rm.addLink('u1', 'g1', 'domain1');
    rm.add_link("u1", "g1", "domain1")

DeleteLink()

DeleteLink deletes the inheritance link between two roles. role: name1 and role: name2. Domain is a prefix to the roles (can be used for other purposes).

For example:

Go
Node.js
Python
    rm.DeleteLink("u1", "g1", "domain1")
    await rm.deleteLink('u1', 'g1', 'domain1');
    rm.delete_link("u1", "g1", "domain1")

HasLink()

HasLink determines whether a link exists between two roles. role: name1 inherits role: name2. Domain is a prefix to the roles (can be used for other purposes).

For example:

Go
Node.js
Python
    rm.HasLink("u1", "g1", "domain1")
    await rm.hasLink('u1', 'g1', 'domain1');
    rm.has_link("u1", "g1", "domain1")

GetRoles()

GetRoles gets the roles that a user inherits. Domain is a prefix to the roles (can be used for other purposes).

For example:

Go
Node.js
Python
    rm.GetRoles("u1", "domain1")
    await rm.getRoles('u1', 'domain1');
    rm.get_roles("u1", "domain")

GetUsers()

GetUsers gets the users that inherits a role. Domain is a prefix to the users (can be used for other purposes).

For example:

Go
Node.js
Python
    rm.GetUsers("g1")
    await rm.getUsers('g1');
    rm.get_users("g1")

PrintRoles()

PrintRoles prints all the roles to log.

For example:

Go
Node.js
Python
    rm.PrintRoles()
    await rm.printRoles();
    rm.print_roles()

SetLogger()

SetLogger sets role manager's logger.

For example:

Go
    logger := log.DefaultLogger{}
logger.EnableLog(true)
rm.SetLogger(&logger)
_ = rm.PrintRoles()

GetDomains()

GetDomains gets domains that a user has

For example:

Go
    result, err := rm.GetDomains(name)
Last updated on 11/28/2022
← RBAC with Domains APIData Permissions →
  • RoleManager
    • AddNamedMatchingFunc()
    • AddNamedDomainMatchingFunc()
    • GetRoleManager()
    • Clear()
    • AddLink()
    • DeleteLink()
    • HasLink()
    • GetRoles()
    • GetUsers()
    • PrintRoles()
    • SetLogger()
    • GetDomains()
Casbin
Docs
Getting StartedManagement APIRBAC APIMiddlewares
Community
Who's using Casbin?Stack Overflow
Casbin          jCasbin
Node-Casbin   PHP-CasbinPyCasbin          Casbin.NETCasbin-CPP        Casbin-RS
Follow @casbinHQ
Copyright © 2022 Casbin Organization