ra-core-ee
Headless hooks and components for building enterprise-grade applications with React Admin.
Installation
npm install --save @react-admin/ra-core-ee
# or
yarn add @react-admin/ra-core-ee
Tip: ra-core-ee
is part of the React-Admin Enterprise Edition, and hosted in a private npm registry. You need to subscribe to one of the Enterprise Edition plans to access this package.
Authorization
getPermissionsFromRoles
This function returns an array of user permissions based on a role definition, a list of roles, and a list of user permissions. It merges the permissions defined in roleDefinitions
for the current user's roles (userRoles
) with the extra userPermissions
.
// static role definitions (usually in the app code)
const roleDefinitions = {
admin: [
{ action: '*', resource: '*' }
],
reader: [
{ action: ['list', 'show', 'export'], resource: '*' }
{ action: 'read', resource: 'posts.*' }
{ action: 'read', resource: 'comments.*' }
],
accounting: [
{ action: '*', resource: 'sales' },
],
};
const permissions = getPermissionsFromRoles({
roleDefinitions,
// roles of the current user (usually returned by the server upon login)
userRoles: ['reader'],
// extra permissions for the current user (usually returned by the server upon login)
userPermissions: [
{ action: 'list', resource: 'sales'},
],
});
// permissions = [
// { action: ['list', 'show', 'export'], resource: '*' },
// { action: 'read', resource: 'posts.*' },
// { action: 'read', resource: 'comments.*' },
// { action: 'list', resource: 'sales' },
// ];
This function takes an object as argument with the following fields:
roleDefinitions
: a dictionary containing the role definition for each roleuserRoles
(optional): an array of roles (admin, reader...) for the current useruserPermissions
(optional): an array of permissions for the current user
canAccessWithPermissions
canAccessWithPermissions
is a helper that facilitates the authProvider.canAccess()
method implementation:
import { canAccessWithPermissions } from '@react-admin/ra-core-ee';
const authProvider = {
// ...
canAccess: async ({ action, resource, record }) => {
const permissions = JSON.parse(localStorage.getItem('permissions'));
return canAccessWithPermissions({
permissions,
action,
resource,
record,
});
}
};
import { canAccessWithPermissions } from "@react-admin/ra-core-ee";
const authProvider = {
// ...
canAccess: async ({ action, resource, record }) => {
const permissions = JSON.parse(localStorage.getItem("permissions"));
return canAccessWithPermissions({
permissions,
action,
resource,
record,
});
},
};
canAccessWithPermissions
expects the permissions
to be a flat array of permissions. It is your responsibility to fetch these permissions (usually during login). If the permissions are spread into several role definitions, you can merge them into a single array using the getPermissionsFromRoles
function.
CHANGELOG
v1.0.0
2025-09-08
- Import headless hooks from ra-rbac