Role-based access control (RBAC) is generally available in Weaviate from version v1.29.
In Weaviate, Role-based access control (RBAC) allows you to define roles and assign permissions to those roles. Users can then be assigned to roles and inherit the permissions associated with those roles.
On this page, you will find examples of how to manage roles and permissions with Weaviate client libraries.
Requirements for managing roles
Role management requires appropriate role resource permissions that can be obtained through:
import weaviate
from weaviate.classes.init import Auth
client = weaviate.connect_to_local(
auth_credentials=Auth.api_key("root-user-key"),
)
import weaviate, { WeaviateClient } from 'weaviate-client'
const client: WeaviateClient = await weaviate.connectToLocal({
authCredentials: new weaviate.ApiKey("user-a-key")
})
cfg := weaviate.Config{
Host: "localhost:8580",
Scheme: "http",
AuthConfig: auth.ApiKey{Value: "root-user-key"},
}
client, err := weaviate.NewClient(cfg)
client = WeaviateClient.connectToLocal(config -> config
.authentication(Authentication.apiKey("root-user-key")));
String scheme = "http";
String host = "localhost";
String port = "8580";
Config config = new Config(scheme, host + ":" + port);
client = WeaviateAuthClient.apiKey(config, "root-user-key");
client = await Connect.Local(restPort: 8580, grpcPort: 50551, credentials: RootUserKey);
Role management
Create new roles with permissions
Permissions for these resource types can be assigned to roles:
-
Role Management
-
User Management
-
Collections (collection definitions only, data object permissions are separate)
-
Tenants
-
Data Objects
-
Backup
-
Cluster Data Access
-
Node Data Access
-
Collection alias
-
Replications
-
Groups
Create a role with Role Management permissions
This example creates a role called testRole with permissions to:
- Create, read, update and delete all roles starting with
testRole*.
from weaviate.classes.rbac import Permissions, RoleScope
permissions = [
Permissions.roles(
role="testRole*",
scope=RoleScope.MATCH,
create=True,
read=True,
update=True,
delete=True,
)
]
client.roles.create(role_name="testRole", permissions=permissions)
const { permissions } = weaviate
const rolePermission = permissions.roles({
role: "testRole",
create: true,
read: true,
update: true,
delete: true,
})
await client.roles.create("testRole", rolePermission)
permissions := []rbac.Permission{
rbac.RolesPermission{
Role: "testRole*",
Scope: "match",
Actions: []string{
models.PermissionActionCreateRoles,
models.PermissionActionReadRoles,
models.PermissionActionUpdateRoles,
models.PermissionActionDeleteRoles,
},
},
}
err = client.Roles().Creator().WithRole(rbac.NewRole("testRole", permissions...)).Do(ctx)
Permission[] rolesPermissions =
new Permission[] {Permission.roles("testRole*",
RolesPermission.Scope.MATCH,
RolesPermission.Action.CREATE,
RolesPermission.Action.READ,
RolesPermission.Action.UPDATE,
RolesPermission.Action.DELETE
)};
client.roles.create("testRole_ManageRoles", rolesPermissions);
Permission<?>[] permissions = new Permission<?>[] {
Permission.roles(
"testRole*",
RolesPermission.Action.CREATE,
RolesPermission.Action.READ,
RolesPermission.Action.UPDATE,
RolesPermission.Action.DELETE
)
};
Result<Boolean> createResult = client.roles().creator()
.withName("testRole")
.withPermissions(permissions)
.run();
var rolesPermissions = new PermissionScope[]
{
new Permissions.Roles("testRole*", RolesScope.Match)
{
Create = true,
Read = true,
Update = true,
Delete = true,
},
};
await client.Roles.Create("testRole_ManageRoles", rolesPermissions);
Create a role with User Management permissions
This example creates a role called testRole with permissions to:
- Create, read, update and delete all users starting with
testUser*.
- Assign and revoke roles to and from users starting with
testUser*.
from weaviate.classes.rbac import Permissions
permissions = [
Permissions.users(
user="testUser*",
create=True,
read=True,
update=True,
delete=True,
assign_and_revoke=True,
)
]
client.roles.create(role_name="testRole", permissions=permissions)
const userPermission = permissions.users({
user: "testRole",
assignAndRevoke: true,
read: true,
})
await client.roles.create("testRole", userPermission)
permissions := []rbac.Permission{
rbac.UsersPermission{
Actions: []string{
models.PermissionActionCreateUsers,
models.PermissionActionReadUsers,
models.PermissionActionUpdateUsers,
models.PermissionActionDeleteUsers,
models.PermissionActionAssignAndRevokeUsers,
},
},
}
err = client.Roles().Creator().WithRole(rbac.NewRole("testRole", permissions...)).Do(ctx)
Permission[] usersPermissions =
new Permission[] {Permission.users("testUser*",
UsersPermission.Action.CREATE,
UsersPermission.Action.READ,
UsersPermission.Action.UPDATE,
UsersPermission.Action.DELETE,
UsersPermission.Action.ASSIGN_AND_REVOKE
)};
client.roles.create("testRole_ManageUsers", usersPermissions);
Permission<?>[] permissions = new Permission<?>[] {
Permission.users(
UsersPermission.Action.CREATE,
UsersPermission.Action.READ,
UsersPermission.Action.UPDATE,
UsersPermission.Action.DELETE,
UsersPermission.Action.ASSIGN_AND_REVOKE
)
};
Result<Boolean> createResult = client.roles().creator()
.withName("testRole")
.withPermissions(permissions)
.run();
var usersPermissions = new PermissionScope[]
{
new Permissions.Users("testUser*")
{
Create = true,
Read = true,
Update = true,
Delete = true,
AssignAndRevoke = true,
},
};
await client.Roles.Create("testRole_ManageUsers", usersPermissions);
Create a role with Collections permissions
This example creates a role called testRole with permissions to:
- Create, read, update and delete all collections starting with
TargetCollection.
from weaviate.classes.rbac import Permissions
permissions = [
Permissions.collections(
collection="TargetCollection*",
create_collection=True,
read_config=True,
update_config=True,
delete_collection=True,
),
]
client.roles.create(role_name="testRole", permissions=permissions)
const { permissions } = weaviate
const collectionPermissions = [
permissions.collections({
collection: "TargetCollection*",
create_collection: true,
read_config: true,
update_config: true,
delete_collection: true,
}),
]
await client.roles.create("testRole", collectionPermissions)
permissions := []rbac.Permission{
rbac.CollectionsPermission{
Collection: "TargetCollection*",
Actions: []string{
models.PermissionActionCreateCollections,
models.PermissionActionReadCollections,
models.PermissionActionUpdateCollections,
models.PermissionActionDeleteCollections,
},
},
}
err = client.Roles().Creator().WithRole(rbac.NewRole("testRole", permissions...)).Do(ctx)
Permission[] collectionsPermissions =
new Permission[] {Permission.collections("TargetCollection*",
CollectionsPermission.Action.CREATE,
CollectionsPermission.Action.READ,
CollectionsPermission.Action.UPDATE,
CollectionsPermission.Action.DELETE
),};
client.roles.create("testRole_ManageCollections", collectionsPermissions);
Permission<?>[] permissions = new Permission<?>[] {
Permission.collections(
"TargetCollection*",
CollectionsPermission.Action.CREATE,
CollectionsPermission.Action.READ,
CollectionsPermission.Action.UPDATE,
CollectionsPermission.Action.DELETE
)
};
Result<Boolean> createResult = client.roles().creator()
.withName("testRole")
.withPermissions(permissions)
.run();
var collectionsPermissions = new PermissionScope[]
{
new Permissions.Collections("TargetCollection*")
{
Create = true,
Read = true,
Update = true,
Delete = true,
},
};
await client.Roles.Create("testRole_ManageCollections", collectionsPermissions);
Create a role with Tenant permissions
This example creates a role called testRole with permissions to:
- Create and delete tenants starting with
TargetTenant in collections starting with TargetCollection.
- Read metadata (like tenant names and status) for tenants starting with
TargetTenant in collections starting with TargetCollection.
- Update the status of tenants starting with
TargetTenant in collections starting with TargetCollection.
from weaviate.classes.rbac import Permissions
permissions = [
Permissions.tenants(
collection="TargetCollection*",
tenant="TargetTenant*",
create=True,
read=True,
update=True,
delete=True,
),
]
client.roles.create(role_name="testRole", permissions=permissions)
const { permissions } = weaviate
const AddTenantPermissions = [
permissions.tenants({
collection: "TargetCollection*",
tenant: "TargetTenant*",
create: true,
read: true,
update: true,
delete: true,
}),
]
await client.roles.create("testRole", AddTenantPermissions)
permissions := []rbac.Permission{
rbac.TenantsPermission{
Actions: []string{
models.PermissionActionCreateTenants,
models.PermissionActionReadTenants,
models.PermissionActionUpdateTenants,
models.PermissionActionDeleteTenants,
},
},
}
err = client.Roles().Creator().WithRole(rbac.NewRole("testRole", permissions...)).Do(ctx)
Permission[] tenantsPermissions =
new Permission[] {Permission.tenants("TargetCollection*",
"TargetTenant*",
TenantsPermission.Action.CREATE,
TenantsPermission.Action.READ,
TenantsPermission.Action.UPDATE,
TenantsPermission.Action.DELETE
),};
client.roles.create("testRole_ManageTenants", tenantsPermissions);
Permission<?>[] permissions = new Permission<?>[] {
Permission.tenants(
TenantsPermission.Action.CREATE,
TenantsPermission.Action.READ,
TenantsPermission.Action.UPDATE,
TenantsPermission.Action.DELETE
)
};
Result<Boolean> createResult = client.roles().creator()
.withName("testRole")
.withPermissions(permissions)
.run();
var tenantsPermissions = new PermissionScope[]
{
new Permissions.Tenants("TargetCollection*", "TargetTenant*")
{
Create = true,
Read = true,
Update = true,
Delete = true,
},
};
await client.Roles.Create("testRole_ManageTenants", tenantsPermissions);
Create a role with Data Objects permissions
This example creates a role called testRole with permissions to:
- Create, read, update and delete data from collections starting with
TargetCollection.
- If multi-tenancy is enabled and the
tenant filter is set, the permission only applies to tenants starting with TargetTenant.
from weaviate.classes.rbac import Permissions
permissions = [
Permissions.data(
collection="TargetCollection*",
tenant="TargetTenant*",
create=True,
read=True,
update=True,
delete=False,
),
]
client.roles.create(role_name="testRole", permissions=permissions)
const { permissions } = weaviate
const dataPermissions = [
permissions.data({
collection: "TargetCollection*",
tenant: "TargetTenant*",
create: true,
read: true,
update: true,
delete: false,
}),
]
await client.roles.create("testRole", dataPermissions)
permissions := []rbac.Permission{
rbac.DataPermission{
Collection: "TargetCollection*",
Actions: []string{
models.PermissionActionCreateData,
models.PermissionActionReadData,
models.PermissionActionUpdateData,
},
},
}
err = client.Roles().Creator().WithRole(rbac.NewRole("testRole", permissions...)).Do(ctx)
Permission[] dataPermissions =
new Permission[] {Permission.data("TargetCollection*",
DataPermission.Action.CREATE,
DataPermission.Action.READ,
DataPermission.Action.UPDATE,
DataPermission.Action.DELETE
),};
client.roles.create("testRole_ManageData", dataPermissions);
Permission<?>[] permissions = new Permission<?>[] {
Permission.data(
"TargetCollection*",
DataPermission.Action.CREATE,
DataPermission.Action.READ,
DataPermission.Action.UPDATE
)
};
Result<Boolean> createResult = client.roles().creator()
.withName("testRole")
.withPermissions(permissions)
.run();
var dataPermissions = new PermissionScope[]
{
new Permissions.Data("TargetCollection*", "TargetTenant*")
{
Create = true,
Read = true,
Update = true,
Delete = true,
},
};
await client.Roles.Create("testRole_ManageData", dataPermissions);
Create a role with Backups permissions
This example creates a role called testRole with permissions to:
- Manage backups for collections starting with
TargetCollection.
from weaviate.classes.rbac import Permissions
permissions = [
Permissions.backup(
collection="TargetCollection*",
manage=True,
),
]
client.roles.create(role_name="testRole", permissions=permissions)
const { permissions } = weaviate
const backupsPermissions = [
permissions.backup({
collection: "TargetCollection*",
manage: true,
}),
]
await client.roles.create("testRole", backupsPermissions)
permissions := []rbac.Permission{
rbac.BackupsPermission{
Collection: "TargetCollection*",
Actions: []string{
models.PermissionActionManageBackups,
},
},
}
err = client.Roles().Creator().WithRole(rbac.NewRole("testRole", permissions...)).Do(ctx)
Permission[] backupPermissions =
new Permission[] {Permission.backups("TargetCollection*",
BackupsPermission.Action.MANAGE
),};
client.roles.create("testRole_ManageBackups", backupPermissions);
Permission<?>[] permissions = new Permission<?>[] {
Permission.backups(
"TargetCollection*",
BackupsPermission.Action.MANAGE
)
};
Result<Boolean> createResult = client.roles().creator()
.withName("testRole")
.withPermissions(permissions)
.run();
var backupPermissions = new PermissionScope[]
{
new Permissions.Backups("TargetCollection*")
{
Manage = true,
},
};
await client.Roles.Create("testRole_ManageBackups", backupPermissions);
Create a role with Cluster Data Access permissions
This example creates a role called testRole with permissions to:
from weaviate.classes.rbac import Permissions
permissions = [
Permissions.cluster(read=True),
]
client.roles.create(role_name="testRole", permissions=permissions)
const { permissions } = weaviate
const clusterPermissions = [
permissions.cluster({
read: true
}),
]
await client.roles.create("testRole", clusterPermissions)
permissions := []rbac.Permission{
rbac.ClusterPermission{
Actions: []string{
models.PermissionActionReadCluster,
},
},
}
err = client.Roles().Creator().WithRole(rbac.NewRole("testRole", permissions...)).Do(ctx)
Permission[] clusterPermissions =
new Permission[] {Permission.cluster(ClusterPermission.Action.READ),
};
client.roles.create("testRole_ReadCluster", clusterPermissions);
Permission<?>[] permissions = new Permission<?>[] {
Permission.cluster(ClusterPermission.Action.READ)
};
Result<Boolean> createResult = client.roles().creator()
.withName("testRole")
.withPermissions(permissions)
.run();
var clusterPermissions = new PermissionScope[]
{
new Permissions.Cluster { Read = true },
};
await client.Roles.Create("testRole_ReadCluster", clusterPermissions);
Create a role with Node Data Access permissions
This example creates a role called testRole with permissions to:
- Read node metadata at the specified verbosity level for collections starting with
TargetCollection.
from weaviate.classes.rbac import Permissions
verbose_permissions = [
Permissions.Nodes.verbose(
collection="TargetCollection*",
read=True,
),
]
minimal_permissions = [
Permissions.Nodes.minimal(
read=True,
),
]
client.roles.create(
role_name="testRole", permissions=verbose_permissions
)
const { permissions } = weaviate
const verboseNodePermissions = [
permissions.nodes.verbose({
collection: "TargetCollection*",
read: true,
}),
]
const minimalNodePermissions = [
permissions.nodes.minimal({
read: true,
}),
]
await client.roles.create("testRole", verboseNodePermissions)
verbosePermissions := []rbac.Permission{
rbac.NodesPermission{
Verbosity: "verbose",
Collection: "TargetCollection*",
Actions: []string{
models.PermissionActionReadNodes,
},
},
}
err = client.Roles().Creator().WithRole(
rbac.NewRole("testRole", verbosePermissions...),
).Do(ctx)
Permission[] verbosePermissions =
new Permission[] {Permission.nodes("TargetCollection*",
NodesPermission.Action.READ
),};
client.roles.create("testRole_ReadNodes", verbosePermissions);
Permission<?>[] verbosePermissions = new Permission<?>[] {
Permission.nodes(
"TargetCollection*",
NodesPermission.Action.READ
)
};
Permission<?>[] minimalPermissions = new Permission<?>[] {
Permission.nodes(
"*",
NodesPermission.Action.READ
)
};
Result<Boolean> createResult = client.roles().creator()
.withName("testRole")
.withPermissions(verbosePermissions)
.run();
var verbosePermissions = new PermissionScope[]
{
new Permissions.Nodes("TargetCollection*", NodeVerbosity.Verbose)
{
Read = true,
},
};
await client.Roles.Create("testRole_ReadNodes", verbosePermissions);
Create a role with Collection Alias permissions
This example creates a role called testRole with permissions to:
- Create, read, update and delete collection aliases starting with
TargetAlias.
from weaviate.classes.rbac import Permissions
permissions = [
Permissions.alias(
alias="TargetAlias*",
collection="TargetCollection*",
create=True,
read=True,
update=True,
delete=False,
),
]
client.roles.create(role_name="testRole", permissions=permissions)
const aliasPermissions = [
permissions.aliases({
alias: "TargetAlias*",
collection: "TargetCollection*",
create: true,
read: true,
update: true,
delete: false,
}),
]
await client.roles.create("testRole", aliasPermissions)
permissions := []rbac.Permission{
rbac.AliasPermission{
Alias: "TargetAlias*",
Collection: "TargetCollection*",
Actions: []string{
models.PermissionActionCreateAliases,
models.PermissionActionReadAliases,
models.PermissionActionUpdateAliases,
},
},
}
err = client.Roles().Creator().WithRole(rbac.NewRole("testRole", permissions...)).Do(ctx)
Permission[] aliasPermissions =
new Permission[] {Permission.aliases("TargetAlias*",
"TargetCollection*",
AliasesPermission.Action.CREATE,
AliasesPermission.Action.READ,
AliasesPermission.Action.UPDATE
),};
client.roles.create("testRole_ManageAliases", aliasPermissions);
Permission<?>[] permissions = new Permission<?>[] {
Permission.alias(
"TargetAlias*",
"TargetCollection*",
AliasPermission.Action.CREATE,
AliasPermission.Action.READ,
AliasPermission.Action.UPDATE
)
};
Result<Boolean> createResult = client.roles().creator()
.withName("testRole")
.withPermissions(permissions)
.run();
var aliasPermissions = new PermissionScope[]
{
new Permissions.Alias("TargetCollection*", "TargetAlias*")
{
Create = true,
Read = true,
Update = true,
},
};
await client.Roles.Create("testRole_ManageAliases", aliasPermissions);
Create a role with Replications permissions
This example creates a role called testRole with permissions to:
- Create, read, update and delete replica movement operations for collections starting with
TargetCollection and shards starting with TargetShard.
from weaviate.classes.rbac import Permissions
permissions = [
Permissions.replicate(
collection="TargetCollection*",
shard="TargetShard*",
create=True,
read=True,
update=True,
delete=False,
),
]
client.roles.create(role_name="testRole", permissions=permissions)
permissions := []rbac.Permission{
rbac.ReplicatePermission{
Collection: "TargetCollection*",
Shard: "TargetShard*",
Actions: []string{
models.PermissionActionCreateReplicate,
models.PermissionActionReadReplicate,
models.PermissionActionUpdateReplicate,
},
},
}
err = client.Roles().Creator().WithRole(rbac.NewRole("testRole", permissions...)).Do(ctx)
Permission[] replicatePermissions =
new Permission[] {Permission.replicate("TargetCollection*",
"TargetShard*",
ReplicatePermission.Action.CREATE,
ReplicatePermission.Action.READ,
ReplicatePermission.Action.UPDATE
),};
client.roles.create("testRole_ManageReplicas", replicatePermissions);
Permission<?>[] permissions = new Permission<?>[] {
Permission.replicate(
"TargetCollection*",
"TargetShard*",
ReplicatePermission.Action.CREATE,
ReplicatePermission.Action.READ,
ReplicatePermission.Action.UPDATE
)
};
Result<Boolean> createResult = client.roles().creator()
.withName("testRole")
.withPermissions(permissions)
.run();
var replicatePermissions = new PermissionScope[]
{
new Permissions.Replicate("TargetCollection*", "TargetShard*")
{
Create = true,
Read = true,
Update = true,
},
};
await client.Roles.Create("testRole_ManageReplicas", replicatePermissions);
Create a role with Groups permissions
This example creates a role called testRole with permissions to:
- Read information about and assign/revoke group membership for OIDC groups starting with
TargetGroup.
from weaviate.classes.rbac import Permissions
permissions = [
Permissions.Groups.oidc(
group="TargetGroup*",
read=True,
assign_and_revoke=True,
),
]
client.roles.create(role_name="testRole", permissions=permissions)
Permission[] groupsPermissions =
new Permission[] {Permission.groups("TargetGroup*",
GroupType.OIDC, GroupsPermission.Action.READ,
GroupsPermission.Action.ASSIGN_AND_REVOKE
),};
client.roles.create("testRole_ManageGroups", groupsPermissions);
var groupsPermissions = new PermissionScope[]
{
new Permissions.Groups("TargetGroup*", RbacGroupType.Oidc)
{
Read = true,
AssignAndRevoke = true,
},
};
await client.Roles.Create("testRole_ManageGroups", groupsPermissions);
Grant additional permissions
Additional permissions can be granted to a role at any time. The role must already exist.
This example grants additional permissions to the role testRole to:
- Create new data in collections that start with
TargetCollection
from weaviate.classes.rbac import Permissions
permissions = [
Permissions.data(collection="TargetCollection*", create=True),
]
client.roles.add_permissions(permissions=permissions, role_name="testRole")
const { permissions } = weaviate
const additionalDataPermissions = [
permissions.data({
collection: "TargetCollection*",
read: true,
create: true
}),
permissions.data({
collection: "TargetCollection*",
read: true,
create: false
}),
]
client.roles.addPermissions("testRole", additionalDataPermissions)
permissions := []rbac.Permission{
rbac.DataPermission{
Collection: "TargetCollection*",
Actions: []string{
models.PermissionActionCreateData,
},
},
}
err = client.Roles().PermissionAdder().
WithRole("testRole").
WithPermissions(permissions...).
Do(ctx)
Permission[] additionalPermissions = new Permission[] {
Permission.data("TargetCollection*", DataPermission.Action.CREATE)};
client.roles.addPermissions(testRole, additionalPermissions);
Permission<?>[] permissions = new Permission<?>[] {
Permission.data("TargetCollection*", DataPermission.Action.CREATE)
};
Result<?> addResult = client.roles().permissionAdder()
.withRole("testRole")
.withPermissions(permissions)
.run();
var additionalPermissions = new PermissionScope[]
{
new Permissions.Data("TargetCollection*", "TargetTenant*") { Create = true },
};
await client.Roles.AddPermissions(testRole, additionalPermissions);
Remove permissions from a role
Permissions can be revoked from a role at any time. Removing all permissions from a role will delete the role itself.
This example removes the following permissions from the role testRole:
- Read the data from collections that start with
TargetCollection
- Create and delete collections that start with
TargetCollection
from weaviate.classes.rbac import Permissions
permissions = [
Permissions.collections(
collection="TargetCollection*",
read_config=True,
create_collection=True,
delete_collection=True,
),
Permissions.data(collection="TargetCollection*", read=True, create=False),
]
client.roles.remove_permissions(role_name="testRole", permissions=permissions)
const { permissions } = weaviate
const permissionsToRemove = [
permissions.collections({
collection: "TargetCollection*",
read_config: true,
create_collection: true,
delete_collection: true,
}),
permissions.data({
collection: "TargetCollection*",
read: true,
create: false
}),
]
await client.roles.removePermissions("testRole", permissionsToRemove)
permissions = []rbac.Permission{
rbac.CollectionsPermission{
Collection: "TargetCollection*",
Actions: []string{
models.PermissionActionReadCollections,
models.PermissionActionCreateCollections,
models.PermissionActionDeleteCollections,
},
},
rbac.DataPermission{
Collection: "TargetCollection*",
Actions: []string{
models.PermissionActionReadData,
},
},
}
err = client.Roles().PermissionRemover().
WithRole("testRole").
WithPermissions(permissions...).
Do(ctx)
Permission[] permissionsToRemove = new Permission[] {
Permission.collections("TargetCollection*",
CollectionsPermission.Action.READ),
Permission.data("TargetCollection*", DataPermission.Action.CREATE),};
client.roles.removePermissions(testRole, permissionsToRemove);
Permission<?>[] permissions = new Permission<?>[] {
Permission.collections("TargetCollection*",
CollectionsPermission.Action.READ,
CollectionsPermission.Action.CREATE,
CollectionsPermission.Action.DELETE),
Permission.data("TargetCollection*",
DataPermission.Action.READ)
};
Result<?> removeResult = client.roles().permissionRemover()
.withRole("testRole")
.withPermissions(permissions)
.run();
var permissionsToRemove = new PermissionScope[]
{
new Permissions.Collections("TargetCollection*") { Read = true },
new Permissions.Data("TargetCollection*", "TargetTenant*") { Create = true },
};
await client.Roles.RemovePermissions(testRole, permissionsToRemove);
Check if a role exists
Check if the role testRole exists:
print(client.roles.exists(role_name="testRole"))
console.log(await client.roles.exists("testRole"))
exists, err := client.Roles().Exists().WithName("testRole").Do(ctx)
fmt.Println(exists)
boolean exists = client.roles.exists(testRole);
System.out.println(exists);
Result<Boolean> exists = client.roles().exists()
.withName("testRole")
.run();
System.out.println(exists.getResult());
var retrievedRole = await client.Roles.Get(testRole);
bool exists = retrievedRole != null;
Console.WriteLine(exists);
Inspect a role
View the permissions assigned to a role.
test_role = client.roles.get(role_name="testRole")
print(test_role)
print(test_role.collections_permissions)
print(test_role.data_permissions)
const testRole = await client.roles.byName("testRole")
console.log(testRole)
console.log(testRole?.collectionsPermissions)
console.log(testRole?.dataPermissions)
testRole, err := client.Roles().Getter().WithName("testRole").Do(ctx)
fmt.Println(testRole)
fmt.Println(testRole.Collections)
fmt.Println(testRole.Data)
Role testRoleData = client.roles.get(testRole).orElse(null);
System.out.println(testRoleData);
System.out.println(testRoleData.permissions());
Result<Role> roleResult = client.roles().getter()
.withName("testRole")
.run();
Role testRole = roleResult.getResult();
System.out.println(testRole);
System.out.println(testRole.getName());
System.out.println(testRole.getPermissions());
var testRoleData = await client.Roles.Get(testRole);
Console.WriteLine(testRoleData);
List all roles
View all roles in the system and their permissions.
all_roles = client.roles.list_all()
for role_name, role in all_roles.items():
print(role_name, role)
const allRoles = await client.roles.listAll()
for (const [key, value] of Object.entries(allRoles)) {
console.log(key)
}
allRoles, err := client.Roles().AllGetter().Do(ctx)
for _, role := range allRoles {
fmt.Println(role.Name, role)
}
List<Role> allRoles = client.roles.list();
for (Role role : allRoles) {
System.out.println(role.name() + " " + role);
}
Result<List<Role>> rolesResult = client.roles().allGetter().run();
List<Role> allRoles = rolesResult.getResult();
for (Role role : allRoles) {
System.out.println(role.getName() + ": " + role.getPermissions());
}
var allRoles = await client.Roles.ListAll();
foreach (var role in allRoles)
{
Console.WriteLine($"{role.Name} {role}");
}
List users with a role
List all users who have the role testRole.
assigned_users = client.roles.get_user_assignments(role_name="testRole")
for user in assigned_users:
print(user)
const assignedUsers = await client.roles.userAssignments("testRole")
for (const users of assignedUsers) {
console.log(users)
}
assignedUsers, err := client.Roles().UserAssignmentGetter().
WithRole("testRole").
Do(ctx)
for _, user := range assignedUsers {
fmt.Println(user)
}
var assignedUsers = client.roles.assignedUserIds(testRole);
for (String user : assignedUsers) {
System.out.println(user);
}
Result<List<UserAssignment>> assignmentsResult = client.roles()
.userAssignmentsGetter()
.withRole("testRole")
.run();
List<UserAssignment> assignedUsers = assignmentsResult.getResult();
for (UserAssignment user : assignedUsers) {
System.out.println(user.getUserId() + " - " + user.getUserType());
}
var assignedUsers = await client.Roles.GetUserAssignments(testRole);
foreach (var assignment in assignedUsers)
{
Console.WriteLine(assignment.UserId);
}
Delete a role
Deleting a role will remove it from the system, and revoke the associated permissions from all users who had this role.
client.roles.delete(role_name="testRole")
await client.roles.delete("testRole")
err = client.Roles().Deleter().WithName("testRole").Do(ctx)
client.roles.delete(testRole);
client.roles().deleter()
.withName("testRole")
.run();
await client.Roles.Delete(testRole);
User management
Visit the Manage users page to learn more about assigning roles to users as well as creating, updating and deleting users.
Further resources
Questions and feedback
If you have any questions or feedback, let us know in the user forum.