Update permissions

Signed-off-by: HichamELBSI <elabbassih@gmail.com>
This commit is contained in:
HichamELBSI 2020-08-04 13:07:55 +02:00
parent 43ee492fcb
commit cb0f33c756
7 changed files with 96 additions and 29 deletions

View File

@ -0,0 +1,5 @@
import React from 'react';
const RolesCreatePage = () => <div>Role create</div>;
export default RolesCreatePage;

View File

@ -0,0 +1,5 @@
import React from 'react';
const RolesEditPage = () => <div>Role edit</div>;
export default RolesEditPage;

View File

@ -0,0 +1,12 @@
import React from 'react';
import { CheckPagePermissions } from 'strapi-helper-plugin';
import pluginPermissions from '../../../permissions';
import RolesCreatePage from '../CreatePage';
const ProtectedRolesCreatePage = () => (
<CheckPagePermissions permissions={pluginPermissions.createRole}>
<RolesCreatePage />
</CheckPagePermissions>
);
export default ProtectedRolesCreatePage;

View File

@ -0,0 +1,12 @@
import React from 'react';
import { CheckPagePermissions } from 'strapi-helper-plugin';
import pluginPermissions from '../../../permissions';
import RolesEditPage from '../EditPage';
const ProtectedRolesEditPage = () => (
<CheckPagePermissions permissions={pluginPermissions.updateRole}>
<RolesEditPage />
</CheckPagePermissions>
);
export default ProtectedRolesEditPage;

View File

@ -1,7 +1,45 @@
import React from 'react'; import React from 'react';
import { Switch, Route, Link } from 'react-router-dom';
import { useGlobalContext, CheckPagePermissions, NotFound } from 'strapi-helper-plugin';
import pluginId from '../../pluginId';
import pluginPermissions from '../../permissions';
const RolesPage = () => { import ProtectedRolesEditPage from './ProtectedEditPage';
return <div>Roles</div>; import ProtectedRolesCreatePage from './ProtectedCreatePage';
const RolesListPage = () => {
return (
<CheckPagePermissions permissions={pluginPermissions.accessRoles}>
<div>Role list</div>
<div>
<Link to="/settings/users-permissions/roles/1">Edit Role</Link>
</div>
<div>
<Link to="/settings/users-permissions/roles/new">Create Role</Link>
</div>
</CheckPagePermissions>
);
}; };
export default RolesPage; const Roles = () => {
const { settingsBaseURL } = useGlobalContext();
return (
<Switch>
<Route
path={`${settingsBaseURL}/${pluginId}/roles/new`}
component={ProtectedRolesCreatePage}
exact
/>
<Route
path={`${settingsBaseURL}/${pluginId}/roles/:id`}
component={ProtectedRolesEditPage}
exact
/>
<Route path={`${settingsBaseURL}/${pluginId}/roles`} component={RolesListPage} exact />
<Route path="" component={NotFound} />
</Switch>
);
};
export default Roles;

View File

@ -53,12 +53,8 @@ export default strapi => {
}, },
name: 'roles', name: 'roles',
to: `${strapi.settingsBaseURL}/${pluginId}/roles`, to: `${strapi.settingsBaseURL}/${pluginId}/roles`,
Component: () => ( Component: () => <RolesPage />,
<CheckPagePermissions permissions={pluginPermissions.settings}> permissions: pluginPermissions.accessRoles,
<RolesPage />
</CheckPagePermissions>
),
permissions: pluginPermissions.settings,
}, },
{ {
title: { title: {
@ -68,11 +64,11 @@ export default strapi => {
name: 'providers', name: 'providers',
to: `${strapi.settingsBaseURL}/${pluginId}/providers`, to: `${strapi.settingsBaseURL}/${pluginId}/providers`,
Component: () => ( Component: () => (
<CheckPagePermissions permissions={pluginPermissions.settings}> <CheckPagePermissions permissions={pluginPermissions.readProviders}>
<ProvidersPage /> <ProvidersPage />
</CheckPagePermissions> </CheckPagePermissions>
), ),
permissions: pluginPermissions.settings, permissions: pluginPermissions.readProviders,
}, },
{ {
title: { title: {
@ -82,11 +78,11 @@ export default strapi => {
name: 'email-templates', name: 'email-templates',
to: `${strapi.settingsBaseURL}/${pluginId}/email-templates`, to: `${strapi.settingsBaseURL}/${pluginId}/email-templates`,
Component: () => ( Component: () => (
<CheckPagePermissions permissions={pluginPermissions.settings}> <CheckPagePermissions permissions={pluginPermissions.readEmailTemplates}>
<EmailTemplatesPage /> <EmailTemplatesPage />
</CheckPagePermissions> </CheckPagePermissions>
), ),
permissions: pluginPermissions.settings, permissions: pluginPermissions.readEmailTemplates,
}, },
{ {
title: { title: {
@ -96,11 +92,11 @@ export default strapi => {
name: 'advanced-settings', name: 'advanced-settings',
to: `${strapi.settingsBaseURL}/${pluginId}/advanced-settings`, to: `${strapi.settingsBaseURL}/${pluginId}/advanced-settings`,
Component: () => ( Component: () => (
<CheckPagePermissions permissions={pluginPermissions.settings}> <CheckPagePermissions permissions={pluginPermissions.readAdvancedSettings}>
<AdvancedSettingsPage /> <AdvancedSettingsPage />
</CheckPagePermissions> </CheckPagePermissions>
), ),
permissions: pluginPermissions.settings, permissions: pluginPermissions.readAdvancedSettings,
}, },
], ],
}, },

View File

@ -1,15 +1,16 @@
const pluginPermissions = { const pluginPermissions = {
// This permission regards the main component (App) and is used to tell // Roles
// If the plugin link should be displayed in the menu accessRoles: [
// And also if the plugin is accessible. This use case is found when a user types the url of the { action: 'plugins::users-permissions.roles.create', subject: null },
// plugin directly in the browser
main: [
{ action: 'plugins::users-permissions.advanced-settings.read', subject: null },
{ action: 'plugins::users-permissions.email-templates.read', subject: null },
{ action: 'plugins::users-permissions.providers.read', subject: null },
{ action: 'plugins::users-permissions.roles.read', subject: null }, { action: 'plugins::users-permissions.roles.read', subject: null },
{ action: 'plugins::users-permissions.roles.update', subject: null },
], ],
createRole: [{ action: 'plugins::users-permissions.roles.create', subject: null }], createRole: [{ action: 'plugins::users-permissions.roles.create', subject: null }],
deleteRole: [{ action: 'plugins::users-permissions.roles.delete', subject: null }],
readRoles: [{ action: 'plugins::users-permissions.roles.read', subject: null }],
updateRole: [{ action: 'plugins::users-permissions.roles.update', subject: null }],
// AdvancedSettings
readAdvancedSettings: [ readAdvancedSettings: [
{ action: 'plugins::users-permissions.advanced-settings.read', subject: null }, { action: 'plugins::users-permissions.advanced-settings.read', subject: null },
{ action: 'plugins::users-permissions.advanced-settings.update', subject: null }, { action: 'plugins::users-permissions.advanced-settings.update', subject: null },
@ -17,6 +18,8 @@ const pluginPermissions = {
updateAdvancedSettings: [ updateAdvancedSettings: [
{ action: 'plugins::users-permissions.advanced-settings.update', subject: null }, { action: 'plugins::users-permissions.advanced-settings.update', subject: null },
], ],
// Emails
readEmailTemplates: [ readEmailTemplates: [
{ action: 'plugins::users-permissions.email-templates.read', subject: null }, { action: 'plugins::users-permissions.email-templates.read', subject: null },
{ action: 'plugins::users-permissions.email-templates.update', subject: null }, { action: 'plugins::users-permissions.email-templates.update', subject: null },
@ -24,17 +27,13 @@ const pluginPermissions = {
updateEmailTemplates: [ updateEmailTemplates: [
{ action: 'plugins::users-permissions.email-templates.update', subject: null }, { action: 'plugins::users-permissions.email-templates.update', subject: null },
], ],
// Providers
readProviders: [ readProviders: [
{ action: 'plugins::users-permissions.providers.read', subject: null }, { action: 'plugins::users-permissions.providers.read', subject: null },
{ action: 'plugins::users-permissions.providers.update', subject: null }, { action: 'plugins::users-permissions.providers.update', subject: null },
], ],
updateProviders: [{ action: 'plugins::users-permissions.providers.update', subject: null }], updateProviders: [{ action: 'plugins::users-permissions.providers.update', subject: null }],
readRoles: [
{ action: 'plugins::users-permissions.roles.read', subject: null },
{ action: 'plugins::users-permissions.roles.update', subject: null },
],
updateRole: [{ action: 'plugins::users-permissions.roles.update', subject: null }],
deleteRole: [{ action: 'plugins::users-permissions.roles.delete', subject: null }],
}; };
export default pluginPermissions; export default pluginPermissions;