Merge pull request #17034 from strapi/chore/plugin-permissions

Chore: Move plugin permissions into constants
This commit is contained in:
Gustav Hansen 2023-06-20 14:55:12 +02:00 committed by GitHub
commit bb7da5829d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
29 changed files with 104 additions and 119 deletions

View File

@ -1,9 +1,7 @@
const pluginPermissions = { export const PERMISSIONS = {
// This permission regards the main component (App) and is used to tell // This permission regards the main component (App) and is used to tell
// If the plugin link should be displayed in the menu // 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 // 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 // plugin directly in the browser
main: [{ action: 'plugin::content-type-builder.read', subject: null }], main: [{ action: 'plugin::content-type-builder.read', subject: null }],
}; };
export default pluginPermissions;

View File

@ -3,7 +3,7 @@ import { prefixPluginTranslations } from '@strapi/helper-plugin';
import pluginPkg from '../../package.json'; import pluginPkg from '../../package.json';
import PluginIcon from './components/PluginIcon'; import PluginIcon from './components/PluginIcon';
import pluginPermissions from './permissions'; import { PERMISSIONS } from './constants';
import pluginId from './pluginId'; import pluginId from './pluginId';
import reducers from './reducers'; import reducers from './reducers';
import formsAPI from './utils/formAPI'; import formsAPI from './utils/formAPI';
@ -21,7 +21,7 @@ export default {
id: `${pluginId}.plugin.name`, id: `${pluginId}.plugin.name`,
defaultMessage: 'Content Types Builder', defaultMessage: 'Content Types Builder',
}, },
permissions: pluginPermissions.main, permissions: PERMISSIONS.main,
async Component() { async Component() {
const component = await import( const component = await import(
/* webpackChunkName: "content-type-builder" */ './pages/App' /* webpackChunkName: "content-type-builder" */ './pages/App'

View File

@ -15,7 +15,7 @@ import { Route, Switch } from 'react-router-dom';
import ContentTypeBuilderNav from '../../components/ContentTypeBuilderNav'; import ContentTypeBuilderNav from '../../components/ContentTypeBuilderNav';
import DataManagerProvider from '../../components/DataManagerProvider'; import DataManagerProvider from '../../components/DataManagerProvider';
import FormModalNavigationProvider from '../../components/FormModalNavigationProvider'; import FormModalNavigationProvider from '../../components/FormModalNavigationProvider';
import pluginPermissions from '../../permissions'; import { PERMISSIONS } from '../../constants';
import pluginId from '../../pluginId'; import pluginId from '../../pluginId';
import RecursivePath from '../RecursivePath'; import RecursivePath from '../RecursivePath';
@ -39,7 +39,7 @@ const App = () => {
}, []); }, []);
return ( return (
<CheckPagePermissions permissions={pluginPermissions.main}> <CheckPagePermissions permissions={PERMISSIONS.main}>
<Helmet title={title} /> <Helmet title={title} />
<FormModalNavigationProvider> <FormModalNavigationProvider>
<DataManagerProvider> <DataManagerProvider>

View File

@ -1,9 +1,7 @@
const pluginPermissions = { export const PERMISSIONS = {
// This permission regards the main component (App) and is used to tell // This permission regards the main component (App) and is used to tell
// If the plugin link should be displayed in the menu // 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 // 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 // plugin directly in the browser
settings: [{ action: 'plugin::email.settings.read', subject: null }], settings: [{ action: 'plugin::email.settings.read', subject: null }],
}; };
export default pluginPermissions;

View File

@ -9,7 +9,7 @@ import { prefixPluginTranslations } from '@strapi/helper-plugin';
import pluginPkg from '../../package.json'; import pluginPkg from '../../package.json';
import pluginPermissions from './permissions'; import { PERMISSIONS } from './constants';
import pluginId from './pluginId'; import pluginId from './pluginId';
import getTrad from './utils/getTrad'; import getTrad from './utils/getTrad';
@ -38,7 +38,7 @@ export default {
return component; return component;
}, },
permissions: pluginPermissions.settings, permissions: PERMISSIONS.settings,
}, },
] ]
); );

View File

@ -23,7 +23,7 @@ import {
import { Envelop } from '@strapi/icons'; import { Envelop } from '@strapi/icons';
import { useIntl } from 'react-intl'; import { useIntl } from 'react-intl';
import pluginPermissions from '../../permissions'; import { PERMISSIONS } from '../../constants';
import getTrad from '../../utils/getTrad'; import getTrad from '../../utils/getTrad';
import schema from '../../utils/schema'; import schema from '../../utils/schema';
@ -32,7 +32,7 @@ import EmailHeader from './components/EmailHeader';
import { fetchEmailSettings, postEmailTest } from './utils/api'; import { fetchEmailSettings, postEmailTest } from './utils/api';
const ProtectedSettingsPage = () => ( const ProtectedSettingsPage = () => (
<CheckPagePermissions permissions={pluginPermissions.settings}> <CheckPagePermissions permissions={PERMISSIONS.settings}>
<SettingsPage /> <SettingsPage />
</CheckPagePermissions> </CheckPagePermissions>
); );

View File

@ -174,3 +174,43 @@ export const localStorageKeys = {
modalView: `STRAPI_UPLOAD_MODAL_VIEW`, modalView: `STRAPI_UPLOAD_MODAL_VIEW`,
view: `STRAPI_UPLOAD_LIBRARY_VIEW`, view: `STRAPI_UPLOAD_LIBRARY_VIEW`,
}; };
export const PERMISSIONS = {
// 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: 'plugin::upload.read', subject: null },
{
action: 'plugin::upload.assets.create',
subject: null,
},
{
action: 'plugin::upload.assets.update',
subject: null,
},
],
copyLink: [
{
action: 'plugin::upload.assets.copy-link',
subject: null,
},
],
create: [
{
action: 'plugin::upload.assets.create',
subject: null,
},
],
download: [
{
action: 'plugin::upload.assets.download',
subject: null,
},
],
read: [{ action: 'plugin::upload.read', subject: null }],
configureView: [{ action: 'plugin::upload.configure-view', subject: null }],
settings: [{ action: 'plugin::upload.settings.read', subject: null }],
update: [{ action: 'plugin::upload.assets.update', subject: null, fields: null }],
};

View File

@ -3,10 +3,10 @@ import { useMemo } from 'react';
import { useRBAC } from '@strapi/helper-plugin'; import { useRBAC } from '@strapi/helper-plugin';
import omit from 'lodash/omit'; import omit from 'lodash/omit';
import pluginPermissions from '../permissions'; import { PERMISSIONS } from '../constants';
export const useMediaLibraryPermissions = () => { export const useMediaLibraryPermissions = () => {
const permissions = useMemo(() => omit(pluginPermissions, 'main'), []); const permissions = useMemo(() => omit(PERMISSIONS, 'main'), []);
const { allowedActions, isLoading } = useRBAC(permissions); const { allowedActions, isLoading } = useRBAC(permissions);
return { ...allowedActions, isLoading }; return { ...allowedActions, isLoading };

View File

@ -11,7 +11,7 @@ import pluginPkg from '../../package.json';
import { MediaLibraryDialog } from './components/MediaLibraryDialog'; import { MediaLibraryDialog } from './components/MediaLibraryDialog';
import { MediaLibraryInput } from './components/MediaLibraryInput'; import { MediaLibraryInput } from './components/MediaLibraryInput';
import PluginIcon from './components/PluginIcon'; import PluginIcon from './components/PluginIcon';
import pluginPermissions from './permissions'; import { PERMISSIONS } from './constants';
import pluginId from './pluginId'; import pluginId from './pluginId';
import getTrad from './utils/getTrad'; import getTrad from './utils/getTrad';
@ -26,7 +26,7 @@ export default {
id: `${pluginId}.plugin.name`, id: `${pluginId}.plugin.name`,
defaultMessage: 'Media Library', defaultMessage: 'Media Library',
}, },
permissions: pluginPermissions.main, permissions: PERMISSIONS.main,
async Component() { async Component() {
const component = await import(/* webpackChunkName: "upload" */ './pages/App'); const component = await import(/* webpackChunkName: "upload" */ './pages/App');
@ -57,7 +57,7 @@ export default {
return component; return component;
}, },
permissions: pluginPermissions.settings, permissions: PERMISSIONS.settings,
}); });
}, },
async registerTrads({ locales }) { async registerTrads({ locales }) {

View File

@ -45,12 +45,11 @@ import { PaginationFooter } from '../../../components/PaginationFooter';
import SortPicker from '../../../components/SortPicker'; import SortPicker from '../../../components/SortPicker';
import { TableList } from '../../../components/TableList'; import { TableList } from '../../../components/TableList';
import { UploadAssetDialog } from '../../../components/UploadAssetDialog/UploadAssetDialog'; import { UploadAssetDialog } from '../../../components/UploadAssetDialog/UploadAssetDialog';
import { localStorageKeys, viewOptions } from '../../../constants'; import { localStorageKeys, PERMISSIONS, viewOptions } from '../../../constants';
import { useAssets } from '../../../hooks/useAssets'; import { useAssets } from '../../../hooks/useAssets';
import { useFolder } from '../../../hooks/useFolder'; import { useFolder } from '../../../hooks/useFolder';
import { useFolders } from '../../../hooks/useFolders'; import { useFolders } from '../../../hooks/useFolders';
import { useMediaLibraryPermissions } from '../../../hooks/useMediaLibraryPermissions'; import { useMediaLibraryPermissions } from '../../../hooks/useMediaLibraryPermissions';
import pluginPermissions from '../../../permissions';
import { containsAssetFilter, getBreadcrumbDataML, getFolderURL, getTrad } from '../../../utils'; import { containsAssetFilter, getBreadcrumbDataML, getFolderURL, getTrad } from '../../../utils';
import { BulkActions } from './components/BulkActions'; import { BulkActions } from './components/BulkActions';
@ -257,7 +256,7 @@ export const MediaLibrary = () => {
} }
endActions={ endActions={
<> <>
<CheckPermissions permissions={pluginPermissions.configureView}> <CheckPermissions permissions={PERMISSIONS.configureView}>
<ActionContainer paddingTop={1} paddingBottom={1}> <ActionContainer paddingTop={1} paddingBottom={1}>
<IconButton <IconButton
forwardedAs={ReactRouterLink} forwardedAs={ReactRouterLink}

View File

@ -27,7 +27,7 @@ import isEqual from 'lodash/isEqual';
import { Helmet } from 'react-helmet'; import { Helmet } from 'react-helmet';
import { useIntl } from 'react-intl'; import { useIntl } from 'react-intl';
import pluginPermissions from '../../permissions'; import { PERMISSIONS } from '../../constants';
import { getRequestUrl, getTrad } from '../../utils'; import { getRequestUrl, getTrad } from '../../utils';
import init from './init'; import init from './init';
@ -275,7 +275,7 @@ export const SettingsPage = () => {
}; };
const ProtectedSettingsPage = () => ( const ProtectedSettingsPage = () => (
<CheckPagePermissions permissions={pluginPermissions.settings}> <CheckPagePermissions permissions={PERMISSIONS.settings}>
<SettingsPage /> <SettingsPage />
</CheckPagePermissions> </CheckPagePermissions>
); );

View File

@ -1,41 +0,0 @@
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: 'plugin::upload.read', subject: null },
{
action: 'plugin::upload.assets.create',
subject: null,
},
{
action: 'plugin::upload.assets.update',
subject: null,
},
],
copyLink: [
{
action: 'plugin::upload.assets.copy-link',
subject: null,
},
],
create: [
{
action: 'plugin::upload.assets.create',
subject: null,
},
],
download: [
{
action: 'plugin::upload.assets.download',
subject: null,
},
],
read: [{ action: 'plugin::upload.read', subject: null }],
configureView: [{ action: 'plugin::upload.configure-view', subject: null }],
settings: [{ action: 'plugin::upload.settings.read', subject: null }],
update: [{ action: 'plugin::upload.assets.update', subject: null, fields: null }],
};
export default pluginPermissions;

View File

@ -1,4 +1,4 @@
const pluginPermissions = { export const PERMISSIONS = {
// This permission regards the main component (App) and is used to tell // This permission regards the main component (App) and is used to tell
// If the plugin link should be displayed in the menu // 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 // And also if the plugin is accessible. This use case is found when a user types the url of the
@ -15,5 +15,3 @@ const pluginPermissions = {
regenerate: [{ action: 'plugin::documentation.settings.regenerate', subject: null }], regenerate: [{ action: 'plugin::documentation.settings.regenerate', subject: null }],
update: [{ action: 'plugin::documentation.settings.update', subject: null }], update: [{ action: 'plugin::documentation.settings.update', subject: null }],
}; };
export default pluginPermissions;

View File

@ -9,7 +9,7 @@ import { prefixPluginTranslations } from '@strapi/helper-plugin';
import pluginPkg from '../../package.json'; import pluginPkg from '../../package.json';
import PluginIcon from './components/PluginIcon'; import PluginIcon from './components/PluginIcon';
import pluginPermissions from './permissions'; import { PERMISSIONS } from './constants';
import pluginId from './pluginId'; import pluginId from './pluginId';
const name = pluginPkg.strapi.name; const name = pluginPkg.strapi.name;
@ -23,7 +23,7 @@ export default {
id: `${pluginId}.plugin.name`, id: `${pluginId}.plugin.name`,
defaultMessage: 'Documentation', defaultMessage: 'Documentation',
}, },
permissions: pluginPermissions.main, permissions: PERMISSIONS.main,
async Component() { async Component() {
const component = await import( const component = await import(
/* webpackChunkName: "documentation-page" */ './pages/PluginPage' /* webpackChunkName: "documentation-page" */ './pages/PluginPage'
@ -53,7 +53,7 @@ export default {
return component; return component;
}, },
permissions: pluginPermissions.main, permissions: PERMISSIONS.main,
}); });
}, },
async registerTrads({ locales }) { async registerTrads({ locales }) {

View File

@ -37,7 +37,7 @@ import { Eye as Show, Refresh as Reload, Trash } from '@strapi/icons';
import { Helmet } from 'react-helmet'; import { Helmet } from 'react-helmet';
import { useIntl } from 'react-intl'; import { useIntl } from 'react-intl';
import permissions from '../../permissions'; import { PERMISSIONS } from '../../constants';
import { getTrad } from '../../utils'; import { getTrad } from '../../utils';
import openWithNewTab from '../../utils/openWithNewTab'; import openWithNewTab from '../../utils/openWithNewTab';
import useReactQuery from '../utils/useReactQuery'; import useReactQuery from '../utils/useReactQuery';
@ -107,7 +107,7 @@ const PluginPage = () => {
})} })}
primaryAction={ primaryAction={
// eslint-disable-next-line // eslint-disable-next-line
<CheckPermissions permissions={permissions.open}> <CheckPermissions permissions={PERMISSIONS.open}>
<Button onClick={() => openDocVersion(data?.currentVersion)} startIcon={<Show />}> <Button onClick={() => openDocVersion(data?.currentVersion)} startIcon={<Show />}>
{formatMessage({ {formatMessage({
id: getTrad('pages.PluginPage.Button.open'), id: getTrad('pages.PluginPage.Button.open'),
@ -166,7 +166,7 @@ const PluginPage = () => {
{ target: `${doc.version}` } { target: `${doc.version}` }
)} )}
/> />
<CheckPermissions permissions={permissions.regenerate}> <CheckPermissions permissions={PERMISSIONS.regenerate}>
<IconButton <IconButton
onClick={() => handleRegenerateDoc(doc.version)} onClick={() => handleRegenerateDoc(doc.version)}
noBorder noBorder
@ -180,7 +180,7 @@ const PluginPage = () => {
)} )}
/> />
</CheckPermissions> </CheckPermissions>
<CheckPermissions permissions={permissions.update}> <CheckPermissions permissions={PERMISSIONS.update}>
{doc.version !== data.currentVersion && ( {doc.version !== data.currentVersion && (
<IconButton <IconButton
onClick={() => handleClickDelete(doc.version)} onClick={() => handleClickDelete(doc.version)}

View File

@ -26,7 +26,7 @@ import { Formik } from 'formik';
import { useIntl } from 'react-intl'; import { useIntl } from 'react-intl';
import FieldActionWrapper from '../../components/FieldActionWrapper'; import FieldActionWrapper from '../../components/FieldActionWrapper';
import permissions from '../../permissions'; import { PERMISSIONS } from '../../constants';
import { getTrad } from '../../utils'; import { getTrad } from '../../utils';
import schema from '../utils/schema'; import schema from '../utils/schema';
import useReactQuery from '../utils/useReactQuery'; import useReactQuery from '../utils/useReactQuery';
@ -70,7 +70,7 @@ const SettingsPage = () => {
defaultMessage: 'Configure the documentation plugin', defaultMessage: 'Configure the documentation plugin',
})} })}
primaryAction={ primaryAction={
<CheckPermissions permissions={permissions.update}> <CheckPermissions permissions={PERMISSIONS.update}>
<Button type="submit" startIcon={<Check />}> <Button type="submit" startIcon={<Check />}>
{formatMessage({ {formatMessage({
id: getTrad('pages.SettingsPage.Button.save'), id: getTrad('pages.SettingsPage.Button.save'),

View File

@ -1,9 +1,7 @@
const i18nPermissions = { export const PERMISSIONS = {
accessMain: [{ action: 'plugin::i18n.locale.read', subject: null }], accessMain: [{ action: 'plugin::i18n.locale.read', subject: null }],
create: [{ action: 'plugin::i18n.locale.create', subject: null }], create: [{ action: 'plugin::i18n.locale.create', subject: null }],
delete: [{ action: 'plugin::i18n.locale.delete', subject: null }], delete: [{ action: 'plugin::i18n.locale.delete', subject: null }],
update: [{ action: 'plugin::i18n.locale.update', subject: null }], update: [{ action: 'plugin::i18n.locale.update', subject: null }],
read: [{ action: 'plugin::i18n.locale.read', subject: null }], read: [{ action: 'plugin::i18n.locale.read', subject: null }],
}; };
export default i18nPermissions;

View File

@ -11,13 +11,13 @@ import PublishModalAdditionalInfos from './components/CMListViewInjectedComponen
import UnpublishModalAdditionalInfos from './components/CMListViewInjectedComponents/UnpublishModalAdditionalInfos'; import UnpublishModalAdditionalInfos from './components/CMListViewInjectedComponents/UnpublishModalAdditionalInfos';
import Initializer from './components/Initializer'; import Initializer from './components/Initializer';
import LocalePicker from './components/LocalePicker'; import LocalePicker from './components/LocalePicker';
import { PERMISSIONS } from './constants';
import addColumnToTableHook from './contentManagerHooks/addColumnToTable'; import addColumnToTableHook from './contentManagerHooks/addColumnToTable';
import addLocaleToCollectionTypesLinksHook from './contentManagerHooks/addLocaleToCollectionTypesLinks'; import addLocaleToCollectionTypesLinksHook from './contentManagerHooks/addLocaleToCollectionTypesLinks';
import addLocaleToSingleTypesLinksHook from './contentManagerHooks/addLocaleToSingleTypesLinks'; import addLocaleToSingleTypesLinksHook from './contentManagerHooks/addLocaleToSingleTypesLinks';
import mutateEditViewLayoutHook from './contentManagerHooks/mutateEditViewLayout'; import mutateEditViewLayoutHook from './contentManagerHooks/mutateEditViewLayout';
import i18nReducers from './hooks/reducers'; import i18nReducers from './hooks/reducers';
import middlewares from './middlewares'; import middlewares from './middlewares';
import pluginPermissions from './permissions';
import pluginId from './pluginId'; import pluginId from './pluginId';
import { getTrad } from './utils'; import { getTrad } from './utils';
import LOCALIZED_FIELDS from './utils/localizedFields'; import LOCALIZED_FIELDS from './utils/localizedFields';
@ -68,7 +68,7 @@ export default {
return component; return component;
}, },
permissions: pluginPermissions.accessMain, permissions: PERMISSIONS.accessMain,
}); });
app.injectContentManagerComponent('editView', 'informations', { app.injectContentManagerComponent('editView', 'informations', {

View File

@ -2,7 +2,7 @@ import React from 'react';
import { useRBAC } from '@strapi/helper-plugin'; import { useRBAC } from '@strapi/helper-plugin';
import i18nPermissions from '../../permissions'; import { PERMISSIONS } from '../../constants';
import LocaleSettingsPage from './LocaleSettingsPage'; import LocaleSettingsPage from './LocaleSettingsPage';
@ -10,7 +10,7 @@ const ProtectedLocaleSettingsPage = () => {
const { const {
isLoading, isLoading,
allowedActions: { canRead, canUpdate, canCreate, canDelete }, allowedActions: { canRead, canUpdate, canCreate, canDelete },
} = useRBAC(i18nPermissions); } = useRBAC(PERMISSIONS);
if (isLoading) { if (isLoading) {
return null; return null;

View File

@ -1,4 +1,4 @@
const pluginPermissions = { export const PERMISSIONS = {
// Roles // Roles
accessRoles: [ accessRoles: [
{ action: 'plugin::users-permissions.roles.create', subject: null }, { action: 'plugin::users-permissions.roles.create', subject: null },
@ -27,5 +27,3 @@ const pluginPermissions = {
readProviders: [{ action: 'plugin::users-permissions.providers.read', subject: null }], readProviders: [{ action: 'plugin::users-permissions.providers.read', subject: null }],
updateProviders: [{ action: 'plugin::users-permissions.providers.update', subject: null }], updateProviders: [{ action: 'plugin::users-permissions.providers.update', subject: null }],
}; };
export default pluginPermissions;

View File

@ -8,7 +8,7 @@ import { prefixPluginTranslations } from '@strapi/helper-plugin';
import pluginPkg from '../../package.json'; import pluginPkg from '../../package.json';
import pluginPermissions from './permissions'; import { PERMISSIONS } from './constants';
import pluginId from './pluginId'; import pluginId from './pluginId';
import getTrad from './utils/getTrad'; import getTrad from './utils/getTrad';
@ -40,7 +40,7 @@ export default {
return component; return component;
}, },
permissions: pluginPermissions.accessRoles, permissions: PERMISSIONS.accessRoles,
}, },
{ {
intlLabel: { intlLabel: {
@ -56,7 +56,7 @@ export default {
return component; return component;
}, },
permissions: pluginPermissions.readProviders, permissions: PERMISSIONS.readProviders,
}, },
{ {
intlLabel: { intlLabel: {
@ -72,7 +72,7 @@ export default {
return component; return component;
}, },
permissions: pluginPermissions.readEmailTemplates, permissions: PERMISSIONS.readEmailTemplates,
}, },
{ {
intlLabel: { intlLabel: {
@ -88,7 +88,7 @@ export default {
return component; return component;
}, },
permissions: pluginPermissions.readAdvancedSettings, permissions: PERMISSIONS.readAdvancedSettings,
}, },
] ]
); );

View File

@ -30,7 +30,7 @@ import { Formik } from 'formik';
import { useIntl } from 'react-intl'; import { useIntl } from 'react-intl';
import { useMutation, useQuery, useQueryClient } from 'react-query'; import { useMutation, useQuery, useQueryClient } from 'react-query';
import pluginPermissions from '../../permissions'; import { PERMISSIONS } from '../../constants';
import { getTrad } from '../../utils'; import { getTrad } from '../../utils';
import { fetchData, putAdvancedSettings } from './utils/api'; import { fetchData, putAdvancedSettings } from './utils/api';
@ -38,7 +38,7 @@ import layout from './utils/layout';
import schema from './utils/schema'; import schema from './utils/schema';
const ProtectedAdvancedSettingsPage = () => ( const ProtectedAdvancedSettingsPage = () => (
<CheckPagePermissions permissions={pluginPermissions.readAdvancedSettings}> <CheckPagePermissions permissions={PERMISSIONS.readAdvancedSettings}>
<AdvancedSettingsPage /> <AdvancedSettingsPage />
</CheckPagePermissions> </CheckPagePermissions>
); );
@ -51,10 +51,7 @@ const AdvancedSettingsPage = () => {
const queryClient = useQueryClient(); const queryClient = useQueryClient();
useFocusWhenNavigate(); useFocusWhenNavigate();
const updatePermissions = useMemo( const updatePermissions = useMemo(() => ({ update: PERMISSIONS.updateAdvancedSettings }), []);
() => ({ update: pluginPermissions.updateAdvancedSettings }),
[]
);
const { const {
isLoading: isLoadingForPermissions, isLoading: isLoadingForPermissions,
allowedActions: { canUpdate }, allowedActions: { canUpdate },

View File

@ -14,7 +14,7 @@ import {
import { useIntl } from 'react-intl'; import { useIntl } from 'react-intl';
import { useMutation, useQuery, useQueryClient } from 'react-query'; import { useMutation, useQuery, useQueryClient } from 'react-query';
import pluginPermissions from '../../permissions'; import { PERMISSIONS } from '../../constants';
import { getTrad } from '../../utils'; import { getTrad } from '../../utils';
import EmailForm from './components/EmailForm'; import EmailForm from './components/EmailForm';
@ -22,7 +22,7 @@ import EmailTable from './components/EmailTable';
import { fetchData, putEmailTemplate } from './utils/api'; import { fetchData, putEmailTemplate } from './utils/api';
const ProtectedEmailTemplatesPage = () => ( const ProtectedEmailTemplatesPage = () => (
<CheckPagePermissions permissions={pluginPermissions.readEmailTemplates}> <CheckPagePermissions permissions={PERMISSIONS.readEmailTemplates}>
<EmailTemplatesPage /> <EmailTemplatesPage />
</CheckPagePermissions> </CheckPagePermissions>
); );
@ -41,7 +41,7 @@ const EmailTemplatesPage = () => {
const [templateToEdit, setTemplateToEdit] = useState(null); const [templateToEdit, setTemplateToEdit] = useState(null);
const updatePermissions = useMemo(() => { const updatePermissions = useMemo(() => {
return { update: pluginPermissions.updateEmailTemplates }; return { update: PERMISSIONS.updateEmailTemplates };
}, []); }, []);
const { const {

View File

@ -35,7 +35,7 @@ import { useIntl } from 'react-intl';
import { useMutation, useQuery, useQueryClient } from 'react-query'; import { useMutation, useQuery, useQueryClient } from 'react-query';
import FormModal from '../../components/FormModal'; import FormModal from '../../components/FormModal';
import pluginPermissions from '../../permissions'; import { PERMISSIONS } from '../../constants';
import { getTrad } from '../../utils'; import { getTrad } from '../../utils';
import { fetchData, putProvider } from './utils/api'; import { fetchData, putProvider } from './utils/api';
@ -56,7 +56,7 @@ export const ProvidersPage = () => {
const { lockApp, unlockApp } = useOverlayBlocker(); const { lockApp, unlockApp } = useOverlayBlocker();
const updatePermissions = useMemo(() => { const updatePermissions = useMemo(() => {
return { update: pluginPermissions.updateProviders }; return { update: PERMISSIONS.updateProviders };
}, []); }, []);
const { const {
@ -267,7 +267,7 @@ export const ProvidersPage = () => {
}; };
const ProtectedProvidersPage = () => ( const ProtectedProvidersPage = () => (
<CheckPagePermissions permissions={pluginPermissions.readProviders}> <CheckPagePermissions permissions={PERMISSIONS.readProviders}>
<ProvidersPage /> <ProvidersPage />
</CheckPagePermissions> </CheckPagePermissions>
); );

View File

@ -36,7 +36,7 @@ import { useIntl } from 'react-intl';
import { useMutation, useQuery, useQueryClient } from 'react-query'; import { useMutation, useQuery, useQueryClient } from 'react-query';
import { useHistory } from 'react-router-dom'; import { useHistory } from 'react-router-dom';
import permissions from '../../../permissions'; import { PERMISSIONS } from '../../../constants';
import pluginId from '../../../pluginId'; import pluginId from '../../../pluginId';
import { getTrad } from '../../../utils'; import { getTrad } from '../../../utils';
@ -60,10 +60,10 @@ const RoleListPage = () => {
const updatePermissions = useMemo(() => { const updatePermissions = useMemo(() => {
return { return {
create: permissions.createRole, create: PERMISSIONS.createRole,
read: permissions.readRoles, read: PERMISSIONS.readRoles,
update: permissions.updateRole, update: PERMISSIONS.updateRole,
delete: permissions.deleteRole, delete: PERMISSIONS.deleteRole,
}; };
}, []); }, []);
@ -157,7 +157,7 @@ const RoleListPage = () => {
defaultMessage: 'List of roles', defaultMessage: 'List of roles',
})} })}
primaryAction={ primaryAction={
<CheckPermissions permissions={permissions.createRole}> <CheckPermissions permissions={PERMISSIONS.createRole}>
<Button onClick={handleNewRoleClick} startIcon={<Plus />} size="S"> <Button onClick={handleNewRoleClick} startIcon={<Plus />} size="S">
{formatMessage({ {formatMessage({
id: getTrad('List.button.roles'), id: getTrad('List.button.roles'),
@ -220,7 +220,7 @@ const RoleListPage = () => {
<TableBody <TableBody
sortedRoles={sortedRoles} sortedRoles={sortedRoles}
canDelete={canDelete} canDelete={canDelete}
permissions={permissions} permissions={PERMISSIONS}
setRoleToDelete={setRoleToDelete} setRoleToDelete={setRoleToDelete}
onDelete={[showConfirmDelete, setShowConfirmDelete]} onDelete={[showConfirmDelete, setShowConfirmDelete]}
/> />

View File

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

View File

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

View File

@ -2,13 +2,13 @@ import React from 'react';
import { CheckPagePermissions } from '@strapi/helper-plugin'; import { CheckPagePermissions } from '@strapi/helper-plugin';
import pluginPermissions from '../../permissions'; import { PERMISSIONS } from '../../constants';
import RolesListPage from './ListPage'; import RolesListPage from './ListPage';
const ProtectedRolesListPage = () => { const ProtectedRolesListPage = () => {
return ( return (
<CheckPagePermissions permissions={pluginPermissions.accessRoles}> <CheckPagePermissions permissions={PERMISSIONS.accessRoles}>
<RolesListPage /> <RolesListPage />
</CheckPagePermissions> </CheckPagePermissions>
); );

View File

@ -3,7 +3,7 @@ import React from 'react';
import { AnErrorOccurred, CheckPagePermissions } from '@strapi/helper-plugin'; import { AnErrorOccurred, CheckPagePermissions } from '@strapi/helper-plugin';
import { Route, Switch } from 'react-router-dom'; import { Route, Switch } from 'react-router-dom';
import pluginPermissions from '../../permissions'; import { PERMISSIONS } from '../../constants';
import pluginId from '../../pluginId'; import pluginId from '../../pluginId';
import ProtectedRolesCreatePage from './ProtectedCreatePage'; import ProtectedRolesCreatePage from './ProtectedCreatePage';
@ -12,7 +12,7 @@ import ProtectedRolesListPage from './ProtectedListPage';
const Roles = () => { const Roles = () => {
return ( return (
<CheckPagePermissions permissions={pluginPermissions.accessRoles}> <CheckPagePermissions permissions={PERMISSIONS.accessRoles}>
<Switch> <Switch>
<Route <Route
path={`/settings/${pluginId}/roles/new`} path={`/settings/${pluginId}/roles/new`}