Skip to main content
Version: Next

Permissions Registry Service

This service allows your plugins to register new permissions, rules, and resource types and integrate with the permissions framework.

Using the service

For a deep dive into how to use the permissionsRegistry service, see the permission guide for plugin authors.

If all you want to do is add new custom permission rules to an existing plugin, you can instead refer to the custom permission rules guide.

Migrating from createPermissionIntegrationRouter

Before this service was introduced, plugins would use createPermissionIntegrationRouter to implement the same functionality. To migrate a plugin, locate the createPermissionIntegrationRouter call for your router and remove it, but copy all options that are passed to it, for example:

export async function createRouter() {
const router = Router();

const permissionIntegrationRouter = createPermissionIntegrationRouter({
resourceType: RESOURCE_TYPE_MY_RESOURCE,
permissions: [myResourcePermissions],
rules: [myResourceRule],
});

router.use(permissionIntegrationRouter);

// ...
}

Next, add a dependency on the PermissionsRegistryService to your plugin, and pass it the same options:

export const examplePlugin = createBackendPlugin({
pluginId: 'example',
register(env) {
env.registerInit({
deps: {
logger: coreServices.logger,
permissionsRegistry: coreServices.permissionsRegistry,
},
async init({ logger }) {
async init({ logger, permissionsRegistry }) {
logger.log('This is a silly example plugin with no functionality');

permissionsRegistry.addResourceType({
resourceType: RESOURCE_TYPE_MY_RESOURCE,
permissions: [myResourcePermissions],
rules: [myResourceRule],
});
},
});
},
});

If you only passed the permissions option to createPermissionIntegrationRouter, you will want to use permissionsRegistry.addPermissions instead.

If you passed multiple resources types to createPermissionIntegrationRouter via the resources option, you will want to call permissionsRegistry.addResourceType multiple times for each of those resource types.