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 { 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 = () => {
return <div>Roles</div>;
import ProtectedRolesEditPage from './ProtectedEditPage';
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',
to: `${strapi.settingsBaseURL}/${pluginId}/roles`,
Component: () => (
<CheckPagePermissions permissions={pluginPermissions.settings}>
<RolesPage />
</CheckPagePermissions>
),
permissions: pluginPermissions.settings,
Component: () => <RolesPage />,
permissions: pluginPermissions.accessRoles,
},
{
title: {
@ -68,11 +64,11 @@ export default strapi => {
name: 'providers',
to: `${strapi.settingsBaseURL}/${pluginId}/providers`,
Component: () => (
<CheckPagePermissions permissions={pluginPermissions.settings}>
<CheckPagePermissions permissions={pluginPermissions.readProviders}>
<ProvidersPage />
</CheckPagePermissions>
),
permissions: pluginPermissions.settings,
permissions: pluginPermissions.readProviders,
},
{
title: {
@ -82,11 +78,11 @@ export default strapi => {
name: 'email-templates',
to: `${strapi.settingsBaseURL}/${pluginId}/email-templates`,
Component: () => (
<CheckPagePermissions permissions={pluginPermissions.settings}>
<CheckPagePermissions permissions={pluginPermissions.readEmailTemplates}>
<EmailTemplatesPage />
</CheckPagePermissions>
),
permissions: pluginPermissions.settings,
permissions: pluginPermissions.readEmailTemplates,
},
{
title: {
@ -96,11 +92,11 @@ export default strapi => {
name: 'advanced-settings',
to: `${strapi.settingsBaseURL}/${pluginId}/advanced-settings`,
Component: () => (
<CheckPagePermissions permissions={pluginPermissions.settings}>
<CheckPagePermissions permissions={pluginPermissions.readAdvancedSettings}>
<AdvancedSettingsPage />
</CheckPagePermissions>
),
permissions: pluginPermissions.settings,
permissions: pluginPermissions.readAdvancedSettings,
},
],
},

View File

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