| --- |
| id: rbac-api |
| title: RBAC API |
| --- |
| |
| A more friendly API for RBAC. This API is a subset of Management API. The RBAC users could use this API to simplify the code. |
| |
| ## Reference |
| |
| global variable `e` is Enforcer instance. |
| |
| <!--DOCUSAURUS_CODE_TABS--> |
| |
| <!--Go--> |
| ```go |
| e, err := NewEnforcer("examples/rbac_model.conf", "examples/rbac_policy.csv") |
| ``` |
| |
| <!--Node.js--> |
| ```typescript |
| const e = await newEnforcer('examples/rbac_model.conf', 'examples/rbac_policy.csv') |
| ``` |
| |
| <!--PHP--> |
| ```php |
| $e = new Enforcer('examples/rbac_model.conf', 'examples/rbac_policy.csv'); |
| ``` |
| |
| <!--Python--> |
| ```python |
| e = casbin.Enforcer("examples/rbac_model.conf", "examples/rbac_policy.csv") |
| ``` |
| |
| <!--.NET--> |
| ```csharp |
| var e = new Enforcer("path/to/model.conf", "path/to/policy.csv"); |
| ``` |
| |
| <!--Rust--> |
| ```rust |
| let mut e = Enforcer::new("examples/rbac_model.conf", "examples/rbac_policy.csv").await?; |
| ``` |
| |
| <!--Java--> |
| ```java |
| Enforcer e = new Enforcer("examples/rbac_model.conf", "examples/rbac_policy.csv"); |
| ``` |
| |
| <!--END_DOCUSAURUS_CODE_TABS--> |
| |
| ### `GetRolesForUser()` |
| |
| GetRolesForUser gets the roles that a user has. |
| |
| For example: |
| |
| <!--DOCUSAURUS_CODE_TABS--> |
| |
| <!--Go--> |
| ```go |
| res := e.GetRolesForUser("alice") |
| ``` |
| |
| <!--Node.js--> |
| ```typescript |
| const res = await e.getRolesForUser('alice') |
| ``` |
| |
| <!--PHP--> |
| ```php |
| $res = $e->getRolesForUser("alice"); |
| ``` |
| |
| <!--Python--> |
| ```python |
| roles = e.get_roles_for_user("alice") |
| ``` |
| |
| <!--.NET--> |
| ```csharp |
| var res = e.GetRolesForUser("alice"); |
| ``` |
| |
| <!--Rust--> |
| ```rust |
| let roles = e.get_roles_for_user("alice", None); // No domain |
| ``` |
| |
| <!--Java--> |
| ```java |
| List<String> res = e.getRolesForUser("alice"); |
| ``` |
| |
| <!--END_DOCUSAURUS_CODE_TABS--> |
| |
| ### `GetUsersForRole()` |
| |
| GetUsersForRole gets the users that has a role. |
| |
| For example: |
| |
| <!--DOCUSAURUS_CODE_TABS--> |
| |
| <!--Go--> |
| ```go |
| res := e.GetUsersForRole("data1_admin") |
| ``` |
| |
| <!--Node.js--> |
| ```typescript |
| const res = await e.getUsersForRole('data1_admin') |
| ``` |
| |
| <!--PHP--> |
| ```php |
| $res = $e->getUsersForRole("data1_admin"); |
| ``` |
| |
| <!--Python--> |
| ```python |
| users = e.get_users_for_role("data1_admin") |
| ``` |
| |
| <!--.NET--> |
| ```csharp |
| var res = e.GetUsersForRole("data1_admin"); |
| ``` |
| |
| <!--Rust--> |
| ```rust |
| let users = e.get_users_for_role("data1_admin", None); // No domain |
| ``` |
| |
| <!--Java--> |
| ```java |
| List<String> res = e.getUsersForRole("data1_admin"); |
| ``` |
| |
| <!--END_DOCUSAURUS_CODE_TABS--> |
| |
| ### `HasRoleForUser()` |
| |
| HasRoleForUser determines whether a user has a role. |
| |
| For example: |
| |
| <!--DOCUSAURUS_CODE_TABS--> |
| |
| <!--Go--> |
| ```go |
| res := e.HasRoleForUser("alice", "data1_admin") |
| ``` |
| |
| <!--Node.js--> |
| ```typescript |
| const res = await e.hasRoleForUser('alice', 'data1_admin') |
| ``` |
| |
| <!--PHP--> |
| ```php |
| $res = $e->hasRoleForUser("alice", "data1_admin"); |
| ``` |
| |
| <!--Python--> |
| ```python |
| has = e.has_role_for_user("alice", "data1_admin") |
| ``` |
| |
| <!--.NET--> |
| ```csharp |
| var res = e.HasRoleForUser("alice", "data1_admin"); |
| ``` |
| |
| <!--Rust--> |
| ```rust |
| let has = e.has_role_for_user("alice", "data1_admin", None); // No domain |
| ``` |
| |
| <!--Java--> |
| ```java |
| boolean res = e.hasRoleForUser("alice", "data1_admin"); |
| ``` |
| |
| <!--END_DOCUSAURUS_CODE_TABS--> |
| |
| ### `AddRoleForUser()` |
| |
| AddRoleForUser adds a role for a user. |
| Returns false if the user already has the role (aka not affected). |
| |
| For example: |
| |
| <!--DOCUSAURUS_CODE_TABS--> |
| |
| <!--Go--> |
| ```go |
| e.AddRoleForUser("alice", "data2_admin") |
| ``` |
| |
| <!--Node.js--> |
| ```typescript |
| await e.addRoleForUser('alice', 'data2_admin') |
| ``` |
| |
| <!--PHP--> |
| ```PHP |
| $e->addRoleForUser("alice", "data2_admin"); |
| ``` |
| |
| <!--Python--> |
| ```python |
| e.add_role_for_user("alice", "data2_admin") |
| ``` |
| |
| <!--.NET--> |
| ```csharp |
| var added = e.AddRoleForUser("alice", "data2_admin"); |
| or |
| var added = await e.AddRoleForUserAsync("alice", "data2_admin"); |
| ``` |
| |
| <!--Rust--> |
| ```rust |
| let added = e.add_role_for_user("alice", "data2_admin", None).await?; // No domain |
| ``` |
| |
| <!--Java--> |
| ```java |
| boolean added = e.addRoleForUser("alice", "data2_admin"); |
| ``` |
| |
| <!--END_DOCUSAURUS_CODE_TABS--> |
| |
| |
| ### `AddRolesForUser()` |
| |
| AddRolesForUser adds multiple roles for a user. |
| Returns false if the user already has one of these roles (aka not affected). |
| |
| For example: |
| |
| <!--DOCUSAURUS_CODE_TABS--> |
| |
| <!--Go--> |
| ```go |
| var roles = []string{"data2_admin", "data1_admin"} |
| e.AddRolesForUser("alice", roles) |
| ``` |
| |
| <!--Node.js--> |
| ```typescript |
| const roles = ["data1_admin", "data2_admin"]; |
| roles.map((role) => e.addRoleForUser("alice", role)); |
| ``` |
| |
| <!--Rust--> |
| ```rust |
| let roles = vec!["data1_admin".to_owned(), "data2_admin".to_owned()]; |
| let all_added = e.add_roles_for_user("alice", roles, None).await?; // No domain |
| ``` |
| |
| <!--END_DOCUSAURUS_CODE_TABS--> |
| |
| |
| ### `DeleteRoleForUser()` |
| |
| DeleteRoleForUser deletes a role for a user. |
| Returns false if the user does not have the role (aka not affected). |
| |
| For example: |
| |
| <!--DOCUSAURUS_CODE_TABS--> |
| |
| <!--Go--> |
| ```go |
| e.DeleteRoleForUser("alice", "data1_admin") |
| ``` |
| |
| <!--Node.js--> |
| ```typescript |
| await e.deleteRoleForUser('alice', 'data1_admin') |
| ``` |
| |
| <!--PHP--> |
| ```php |
| $e->deleteRoleForUser("alice", "data1_admin"); |
| ``` |
| |
| <!--Python--> |
| ```python |
| e.delete_role_for_user("alice", "data1_admin") |
| ``` |
| |
| <!--.NET--> |
| ```csharp |
| var deleted = e.DeleteRoleForUser("alice", "data1_admin"); |
| or |
| var deleted = await e.DeleteRoleForUser("alice", "data1_admin"); |
| ``` |
| |
| <!--Rust--> |
| ```rust |
| let deleted = e.delete_role_for_user("alice", "data1_admin", None).await?; // No domain |
| ``` |
| |
| <!--Java--> |
| ```java |
| boolean deleted = e.deleteRoleForUser("alice", "data1_admin"); |
| ``` |
| |
| <!--END_DOCUSAURUS_CODE_TABS--> |
| |
| ### `DeleteRolesForUser()` |
| |
| DeleteRolesForUser deletes all roles for a user. |
| Returns false if the user does not have any roles (aka not affected). |
| |
| For example: |
| |
| <!--DOCUSAURUS_CODE_TABS--> |
| |
| <!--Go--> |
| ```go |
| e.DeleteRolesForUser("alice") |
| ``` |
| |
| <!--Node.js--> |
| ```typescript |
| await e.deleteRolesForUser('alice') |
| ``` |
| |
| <!--PHP--> |
| ```php |
| $e->deleteRolesForUser("alice"); |
| ``` |
| |
| <!--Python--> |
| ```python |
| e.delete_roles_for_user("alice") |
| ``` |
| |
| <!--.NET--> |
| ```csharp |
| var deletedAtLeastOne = e.DeleteRolesForUser("alice"); |
| or |
| var deletedAtLeastOne = await e.DeleteRolesForUserAsync("alice"); |
| ``` |
| |
| <!--Rust--> |
| ```rust |
| let deleted_at_least_one = e.delete_roles_for_user("alice", None).await?; // No domain |
| ``` |
| |
| <!--Java--> |
| ```java |
| boolean deletedAtLeastOne = e.deleteRolesForUser("alice"); |
| ``` |
| |
| <!--END_DOCUSAURUS_CODE_TABS--> |
| |
| ### `DeleteUser()` |
| |
| DeleteUser deletes a user. |
| Returns false if the user does not exist (aka not affected). |
| |
| For example: |
| |
| <!--DOCUSAURUS_CODE_TABS--> |
| |
| <!--Go--> |
| ``` |
| e.DeleteUser("alice") |
| ``` |
| |
| <!--Node.js--> |
| ```typescript |
| await e.deleteUser('alice') |
| ``` |
| |
| <!--PHP--> |
| ```php |
| $e->deleteUser("alice"); |
| ``` |
| |
| <!--Python--> |
| ```python |
| e.delete_user("alice") |
| ``` |
| |
| <!--.NET--> |
| ```csharp |
| var deleted = e.DeleteUser("alice"); |
| or |
| var deleted = await e.DeleteUserAsync("alice"); |
| ``` |
| |
| <!--Rust--> |
| ```rust |
| let deleted = e.delete_user("alice").await?; |
| ``` |
| |
| <!--Java--> |
| ```java |
| boolean deleted = e.deleteUser("alice"); |
| ``` |
| |
| <!--END_DOCUSAURUS_CODE_TABS--> |
| |
| ### `DeleteRole()` |
| |
| DeleteRole deletes a role. |
| |
| For example: |
| |
| <!--DOCUSAURUS_CODE_TABS--> |
| |
| <!--Go--> |
| ```go |
| e.DeleteRole("data2_admin") |
| ``` |
| |
| <!--Node.js--> |
| ```typescript |
| await e.deleteRole("data2_admin") |
| ``` |
| |
| <!--PHP--> |
| ```php |
| $e->deleteRole("data2_admin"); |
| ``` |
| |
| <!--Python--> |
| ```python |
| e.delete_role("data2_admin") |
| ``` |
| |
| <!--.NET--> |
| ```csharp |
| var deleted = e.DeleteRole("data2_admin"); |
| or |
| var deleted = await e.DeleteRoleAsync("data2_admin"); |
| ``` |
| |
| <!--Rust--> |
| ```rust |
| let deleted = e.delete_role("data2_admin").await?; |
| ``` |
| |
| <!--Java--> |
| ```java |
| e.deleteRole("data2_admin"); |
| ``` |
| |
| <!--END_DOCUSAURUS_CODE_TABS--> |
| |
| ### `DeletePermission()` |
| |
| DeletePermission deletes a permission. |
| Returns false if the permission does not exist (aka not affected). |
| |
| For example: |
| |
| <!--DOCUSAURUS_CODE_TABS--> |
| |
| <!--Go--> |
| ```go |
| e.DeletePermission("read") |
| ``` |
| |
| <!--Node.js--> |
| ```typescript |
| await e.deletePermission('read') |
| ``` |
| |
| <!--PHP--> |
| ```php |
| $e->deletePermission("read"); |
| ``` |
| |
| <!--Python--> |
| ```python |
| e.delete_permission("read") |
| ``` |
| |
| <!--.NET--> |
| ```csharp |
| var deleted = e.DeletePermission("read"); |
| or |
| var deleted = await e.DeletePermissionAsync("read"); |
| ``` |
| |
| <!--Rust--> |
| ```rust |
| let deleted = e.delete_permission(vec!["read".to_owned()]).await?; |
| ``` |
| |
| <!--Java--> |
| ```java |
| boolean deleted = e.deletePermission("read"); |
| ``` |
| |
| <!--END_DOCUSAURUS_CODE_TABS--> |
| |
| |
| ### `AddPermissionForUser()` |
| |
| AddPermissionForUser adds a permission for a user or role. |
| Returns false if the user or role already has the permission (aka not affected). |
| |
| For example: |
| |
| <!--DOCUSAURUS_CODE_TABS--> |
| |
| <!--Go--> |
| ```go |
| e.AddPermissionForUser("bob", "read") |
| ``` |
| |
| <!--Node.js--> |
| ```typescript |
| await e.addPermissionForUser('bob', 'read') |
| ``` |
| |
| <!--PHP--> |
| ```php |
| $e->addPermissionForUser("bob", "read"); |
| ``` |
| |
| <!--Python--> |
| ```python |
| e.add_permission_for_user("bob", "read") |
| ``` |
| |
| <!--.NET--> |
| ```csharp |
| var added = e.AddPermissionForUser("bob", "read"); |
| or |
| var added = await e.AddPermissionForUserAsync("bob", "read"); |
| ``` |
| |
| <!--Rust--> |
| ```rust |
| let added = e.add_permission_for_user("bob", vec!["read".to_owned()]).await?; |
| ``` |
| |
| <!--Java--> |
| ```java |
| boolean added = e.addPermissionForUser("bob", "read"); |
| ``` |
| |
| <!--END_DOCUSAURUS_CODE_TABS--> |
| |
| ### `AddPermissionsForUser()` |
| |
| AddPermissionsForUser adds multiple permissions for a user or role. |
| Returns false if the user or role already has one of the permissions (aka not affected). |
| |
| For example: |
| |
| <!--DOCUSAURUS_CODE_TABS--> |
| |
| <!--Go--> |
| ```go |
| var permissions = [][]string{{"data1", "read"},{"data2","write"}} |
| for i := 0; i < len(permissions); i++ { |
| e.AddPermissionsForUser("alice", permissions[i]) |
| } |
| ``` |
| |
| <!--Node.js--> |
| ```typescript |
| const permissions = [ |
| ["data1", "read"], |
| ["data2", "write"], |
| ]; |
| |
| permissions.map((permission) => e.addPermissionForUser("bob", ...permission)); |
| ``` |
| |
| <!--Rust--> |
| ```rust |
| let permissions = vec![ |
| vec!["data1".to_owned(), "read".to_owned()], |
| vec!["data2".to_owned(), "write".to_owned()], |
| ]; |
| |
| let all_added = e.add_permissions_for_user("bob", permissions).await?; |
| ``` |
| |
| <!--END_DOCUSAURUS_CODE_TABS--> |
| |
| |
| ### `DeletePermissionForUser()` |
| |
| DeletePermissionForUser deletes a permission for a user or role. |
| Returns false if the user or role does not have the permission (aka not affected). |
| |
| For example: |
| |
| <!--DOCUSAURUS_CODE_TABS--> |
| |
| <!--Go--> |
| ```go |
| e.DeletePermissionForUser("bob", "read") |
| ``` |
| |
| <!--Node.js--> |
| ```typescript |
| await e.deletePermissionForUser("bob", "read") |
| ``` |
| |
| <!--PHP--> |
| ```php |
| $e->deletePermissionForUser("bob", "read"); |
| ``` |
| |
| <!--Python--> |
| ```python |
| e.delete_permission_for_user("bob", "read") |
| ``` |
| |
| <!--.NET--> |
| ```csharp |
| var deleted = e.DeletePermissionForUser("bob", "read"); |
| or |
| var deleted = await e.DeletePermissionForUserAsync("bob", "read"); |
| ``` |
| |
| <!--Rust--> |
| ```rust |
| let deleted = e.delete_permission_for_user("bob", vec!["read".to_owned()]).await?; |
| ``` |
| |
| <!--Java--> |
| ```java |
| boolean deleted = e.deletePermissionForUser("bob", "read"); |
| ``` |
| |
| <!--END_DOCUSAURUS_CODE_TABS--> |
| |
| |
| ### `DeletePermissionsForUser()` |
| |
| DeletePermissionsForUser deletes permissions for a user or role. |
| Returns false if the user or role does not have any permissions (aka not affected). |
| |
| For example: |
| |
| <!--DOCUSAURUS_CODE_TABS--> |
| |
| <!--Go--> |
| ```go |
| e.DeletePermissionsForUser("bob") |
| ``` |
| |
| <!--Node.js--> |
| ```typescript |
| await e.deletePermissionsForUser('bob') |
| ``` |
| |
| <!--PHP--> |
| ```php |
| $e->deletePermissionsForUser("bob"); |
| ``` |
| |
| <!--Python--> |
| ```python |
| e.delete_permissions_for_user("bob") |
| ``` |
| |
| <!--.NET--> |
| ```csharp |
| var deletedAtLeastOne = e.DeletePermissionsForUser("bob"); |
| or |
| var deletedAtLeastOne = await e.DeletePermissionsForUserAsync("bob"); |
| ``` |
| |
| <!--Rust--> |
| ```rust |
| let deleted_at_least_one = e.delete_permissions_for_user("bob").await?; |
| ``` |
| |
| <!--Java--> |
| ```java |
| boolean deletedAtLeastOne = e.deletePermissionForUser("bob"); |
| ``` |
| |
| <!--END_DOCUSAURUS_CODE_TABS--> |
| |
| ### `GetPermissionsForUser()` |
| |
| GetPermissionsForUser gets permissions for a user or role. |
| |
| For example: |
| |
| <!--DOCUSAURUS_CODE_TABS--> |
| |
| <!--Go--> |
| ```go |
| e.GetPermissionsForUser("bob") |
| ``` |
| |
| <!--Node.js--> |
| ```typescript |
| await e.getPermissionsForUser('bob') |
| ``` |
| |
| <!--PHP--> |
| ```php |
| $e->getPermissionsForUser("bob"); |
| ``` |
| |
| <!--Python--> |
| ```python |
| e.get_permissions_for_user("bob") |
| ``` |
| |
| <!--.NET--> |
| ```csharp |
| var permissions = e.GetPermissionsForUser("bob"); |
| ``` |
| |
| <!--Java--> |
| ```java |
| List<List<String>> permissions = e.getPermissionsForUser("bob"); |
| ``` |
| |
| <!--END_DOCUSAURUS_CODE_TABS--> |
| |
| ### `HasPermissionForUser()` |
| |
| HasPermissionForUser determines whether a user has a permission. |
| |
| For example: |
| |
| <!--DOCUSAURUS_CODE_TABS--> |
| |
| <!--Go--> |
| ```go |
| e.HasPermissionForUser("alice", []string{"read"}) |
| ``` |
| |
| <!--Node.js--> |
| ```typescript |
| await e.hasPermissionForUser('alice', 'read') |
| ``` |
| |
| <!--PHP--> |
| ```php |
| $e->hasPermissionForUser("alice", []string{"read"}); |
| ``` |
| |
| <!--Python--> |
| ```python |
| has = e.has_permission_for_user("alice", "read") |
| ``` |
| |
| <!--.NET--> |
| ```csharp |
| var has = e.HasPermissionForUser("bob", "read"); |
| ``` |
| |
| <!--Rust--> |
| ```rust |
| let has = e.has_permission_for_user("alice", vec!["data1".to_owned(), "read".to_owned()]); |
| ``` |
| |
| <!--Java--> |
| ```java |
| boolean has = e.hasPermissionForUser("alice", "read"); |
| ``` |
| |
| <!--END_DOCUSAURUS_CODE_TABS--> |
| |
| ### `GetImplicitRolesForUser()` |
| |
| GetImplicitRolesForUser gets implicit roles that a user has. |
| Compared to GetRolesForUser(), this function retrieves indirect roles besides direct roles. |
| |
| For example: |
| g, alice, role:admin |
| g, role:admin, role:user |
| |
| GetRolesForUser("alice") can only get: ["role:admin"]. |
| But GetImplicitRolesForUser("alice") will get: ["role:admin", "role:user"]. |
| |
| |
| For example: |
| |
| <!--DOCUSAURUS_CODE_TABS--> |
| |
| <!--Go--> |
| ```go |
| e.GetImplicitRolesForUser("alice") |
| ``` |
| |
| <!--Node.js--> |
| ```typescript |
| await e.getImplicitRolesForUser("alice") |
| ``` |
| |
| <!--PHP--> |
| ```php |
| $e->getImplicitRolesForUser("alice"); |
| ``` |
| |
| <!--Python--> |
| ```python |
| e.get_implicit_roles_for_user("alice") |
| ``` |
| |
| <!--.NET--> |
| ```csharp |
| var implicitRoles = e.GetImplicitRolesForUser("alice"); |
| ``` |
| |
| <!--Rust--> |
| ```rust |
| e.get_implicit_roles_for_user("alice", None); // No domain |
| ``` |
| |
| <!--Java--> |
| ```java |
| List<String> implicitRoles = e.getImplicitRolesForUser("alice"); |
| ``` |
| |
| <!--END_DOCUSAURUS_CODE_TABS--> |
| |
| ### `GetImplicitUsersForRole()` |
| |
| GetImplicitUsersForRole gets all users inheriting the role. |
| Compared to GetUsersForRole(), this function retrieves indirect users. |
| |
| For example: |
| g, alice, role:admin |
| g, role:admin, role:user |
| |
| GetUsersForRole("role:user") can only get: ["role:admin"]. |
| But GetImplicitUesrsForRole("role:user") will get: ["role:admin", "alice"]. |
| |
| |
| For example: |
| |
| <!--DOCUSAURUS_CODE_TABS--> |
| |
| <!--Go--> |
| ```go |
| users := e.GetImplicitUsersForRole("role:user") |
| ``` |
| |
| <!--Node.js--> |
| ```typescript |
| const users = e.getImplicitUsersForRole("role:user"); |
| ``` |
| |
| <!--Java--> |
| ```java |
| List<String> users = e.getImplicitUsersForRole("role:user"); |
| ``` |
| |
| <!--END_DOCUSAURUS_CODE_TABS--> |
| |
| ### `GetImplicitPermissionsForUser()` |
| |
| GetImplicitPermissionsForUser gets implicit permissions for a user or role. |
| Compared to GetPermissionsForUser(), this function retrieves permissions for inherited roles. |
| |
| For example: |
| p, admin, data1, read |
| p, alice, data2, read |
| g, alice, admin |
| |
| GetPermissionsForUser("alice") can only get: [["alice", "data2", "read"]]. |
| But GetImplicitPermissionsForUser("alice") will get: [["admin", "data1", "read"], ["alice", "data2", "read"]]. |
| |
| For example: |
| |
| <!--DOCUSAURUS_CODE_TABS--> |
| |
| <!--Go--> |
| ```go |
| e.GetImplicitPermissionsForUser("alice") |
| ``` |
| |
| <!--Node.js--> |
| ```text |
| await e.getImplicitPermissionsForUser("alice") |
| ``` |
| |
| <!--PHP--> |
| ```php |
| $e->getImplicitPermissionsForUser("alice"); |
| ``` |
| |
| <!--Python--> |
| ```python |
| e.get_implicit_permissions_for_user("alice") |
| ``` |
| |
| <!--.NET--> |
| ```csharp |
| var implicitPermissions = e.GetImplicitPermissionsForUser("alice"); |
| ``` |
| |
| <!--Rust--> |
| ```rust |
| e.get_implicit_permissions_for_user("alice", None); // No domain |
| ``` |
| |
| <!--Java--> |
| ```java |
| List<List<String>> implicitPermissions = e.getImplicitPermissionsForUser("alice"); |
| ``` |
| |
| <!--END_DOCUSAURUS_CODE_TABS--> |
| |
| ### `GetNamedImplicitPermissionsForUser()` |
| |
| GetNamedImplicitPermissionsForUser gets implicit permissions for a user or role by named policy |
| Compared to GetImplicitPermissionsForUser(), this function allow you to specify the policy name. |
| |
| For example: |
| p, admin, data1, read |
| p2, admin, create |
| g, alice, admin |
| |
| GetImplicitPermissionsForUser("alice") only get: [["admin", "data1", "read"]], whose policy is default "p" |
| |
| But you can specify the policy as "p2" to get: [["admin", "create"]] by GetNamedImplicitPermissionsForUser("p2","alice") |
| |
| For example: |
| |
| <!--DOCUSAURUS_CODE_TABS--> |
| |
| <!--Go--> |
| ```go |
| e.GetNamedImplicitPermissionsForUser("p2","alice") |
| ``` |
| |
| <!--Python--> |
| ```python |
| e.get_named_implicit_permissions_for_user("p2", "alice") |
| ``` |
| |
| <!--END_DOCUSAURUS_CODE_TABS--> |
| |
| ### `GetDomainsForUser()` |
| GetDomainsForUser gets all domains which a user has. |
| |
| For example: |
| p, admin, domain1, data1, read |
| p, admin, domain2, data2, read |
| p, admin, domain2, data2, write |
| g, alice, admin, domain1 |
| g, alice, admin, domain2 |
| |
| GetDomainsForUser("alice") could get ["domain1", "domain2"] |
| |
| For example: |
| |
| <!--DOCUSAURUS_CODE_TABS--> |
| |
| <!--Go--> |
| ```go |
| result, err := e.GetDomainsForUser("alice") |
| ``` |
| |
| <!--END_DOCUSAURUS_CODE_TABS--> |
| |
| ### `GetImplicitResourcesForUser()` |
| |
| GetImplicitResourcesForUser returns all policies that should be true for user. |
| |
| For example: |
| |
| ```csv |
| p, alice, data1, read |
| p, bob, data2, write |
| p, data2_admin, data2, read |
| p, data2_admin, data2, write |
| |
| g, alice, data2_admin |
| ``` |
| |
| GetImplicitResourcesForUser("alice") will return |
| `[[alice data1 read] [alice data2 read] [alice data2 write]]` |
| |
| |
| <!--DOCUSAURUS_CODE_TABS--> |
| |
| <!--Go--> |
| ```go |
| resources, err := e.GetImplicitResourcesForUser("alice") |
| ``` |
| |
| <!--END_DOCUSAURUS_CODE_TABS--> |