Set Custom Permissions
For default roles and permission, refer to Roles and Permissions
Custom Roles
Section titled “Custom Roles”The Dashboard allows you to create custom Roles, which can be assigned to Users and used to define custom Permissions.
Custom Permissions
Section titled “Custom Permissions”Custom permissions are defined using the permissions object in the React Bricks configuration.
Permissions are implemented by providing one of more permission functions.
The available permission functions are:
canAddPage: (user, pageType) => booleancanAddTranslation: (user, pageType, language) => booleancanSeePageType: (user, pageType) => booleancanSeePage: (user, page) => booleancanEditPage: (user, page) => booleancanDeletePage: (user, page) => booleancanDeleteTranslation: (user, page) => booleancanUseBrick: (user, brick) => boolean
The complete description of the Permissions type is as follows:
type Permissions = { canAddPage?: (user: PermissionUser, pageType: string) => boolean canAddTranslation?: ( user: PermissionUser, pageType: string, language: string ) => boolean canSeePageType?: (user: PermissionUser, pageType: string) => boolean canSeePage?: ( user: PermissionUser, page: Omit<PermissionPage, 'language'> ) => boolean canEditPage?: (user: PermissionUser, page: PermissionPage) => boolean canDeletePage?: ( user: PermissionUser, page: Omit<PermissionPage, 'language'> ) => boolean canDeleteTranslation?: (user: PermissionUser, page: PermissionPage) => boolean canUseBrick?: (user: PermissionUser, brick: PermissionBrick) => boolean}Usage Example
Section titled “Usage Example”Let’s say we’ve created the custom roles blog_editor and translator_fr in the dashboard.
Now, we’ll create two permission rules:
- Prevent all editors from adding
institutionalpages and restrictblog_editorusers to adding only pages of typeblog. - Prevent
French translatorsfrom deleting translations in languages other thanFrench.
<ReactBricks ... permissions={{ canAddPage: (user, pageType) => { if ( pageType === 'institutional' || user.customRole.id === 'blog_editor' && pageType !== 'blog') { return false } return true }, canDeleteTranslation: (user, page) => { if (user.customRole.id === 'translator_fr' && page.language !== 'fr') { return false } return true } }}> ...</ReactBricks>