@strapi/plugin-users-permissions 0.0.0-next.dff425769af4d4d006725a10c395f59637403653 → 0.0.0-next.e16a4b69b276a52e1b299f339479948d67ec66f3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/admin/src/components/BoundRoute/index.js +5 -3
- package/admin/src/components/FormModal/Input/index.js +6 -3
- package/admin/src/components/FormModal/index.js +13 -10
- package/admin/src/components/Permissions/PermissionRow/CheckboxWrapper.js +1 -1
- package/admin/src/components/Permissions/PermissionRow/SubCategory.js +26 -5
- package/admin/src/components/Permissions/PermissionRow/index.js +4 -2
- package/admin/src/components/Permissions/index.js +5 -2
- package/admin/src/components/Policies/index.js +3 -2
- package/admin/src/components/UsersPermissions/index.js +8 -5
- package/admin/src/{permissions.js → constants.js} +1 -3
- package/admin/src/contexts/UsersPermissionsContext/index.js +1 -0
- package/admin/src/hooks/index.js +1 -1
- package/admin/src/hooks/useFetchRole/index.js +6 -3
- package/admin/src/hooks/useForm/index.js +7 -7
- package/admin/src/hooks/usePlugins.js +71 -0
- package/admin/src/hooks/useRolesList/index.js +22 -20
- package/admin/src/index.js +7 -5
- package/admin/src/pages/AdvancedSettings/index.js +27 -28
- package/admin/src/pages/AdvancedSettings/utils/api.js +1 -0
- package/admin/src/pages/AdvancedSettings/utils/schema.js +1 -1
- package/admin/src/pages/EmailTemplates/components/EmailForm.js +14 -13
- package/admin/src/pages/EmailTemplates/components/EmailTable.js +9 -7
- package/admin/src/pages/EmailTemplates/index.js +16 -17
- package/admin/src/pages/EmailTemplates/utils/api.js +1 -0
- package/admin/src/pages/EmailTemplates/utils/schema.js +1 -1
- package/admin/src/pages/Providers/index.js +31 -32
- package/admin/src/pages/Providers/utils/api.js +1 -0
- package/admin/src/pages/Providers/utils/forms.js +1 -1
- package/admin/src/pages/Roles/{CreatePage/index.js → CreatePage.js} +26 -23
- package/admin/src/pages/Roles/{EditPage/index.js → EditPage.js} +23 -20
- package/admin/src/pages/Roles/ListPage/components/TableBody.js +4 -3
- package/admin/src/pages/Roles/ListPage/index.js +49 -35
- package/admin/src/pages/Roles/ListPage/utils/api.js +2 -1
- package/admin/src/pages/Roles/{ProtectedCreatePage/index.js → ProtectedCreatePage.js} +6 -3
- package/admin/src/pages/Roles/{ProtectedEditPage/index.js → ProtectedEditPage.js} +6 -3
- package/admin/src/pages/Roles/{ProtectedListPage/index.js → ProtectedListPage.js} +5 -3
- package/admin/src/pages/Roles/{CreatePage/utils/schema.js → constants.js} +2 -4
- package/admin/src/pages/Roles/index.js +9 -6
- package/admin/src/translations/ru.json +50 -26
- package/admin/src/utils/index.js +1 -1
- package/documentation/content-api.yaml +22 -14
- package/jest.config.front.js +2 -0
- package/package.json +21 -25
- package/server/controllers/auth.js +6 -0
- package/server/register.js +7 -1
- package/server/services/providers-registry.js +1 -1
- package/admin/src/hooks/usePlugins/index.js +0 -67
- package/admin/src/hooks/usePlugins/init.js +0 -5
- package/admin/src/hooks/usePlugins/reducer.js +0 -34
- package/admin/src/pages/Roles/EditPage/utils/schema.js +0 -9
|
@@ -1,25 +1,28 @@
|
|
|
1
|
-
import React, {
|
|
2
|
-
|
|
3
|
-
import {
|
|
1
|
+
import React, { useRef, useState } from 'react';
|
|
2
|
+
|
|
3
|
+
import { ContentLayout, HeaderLayout, Main, useNotifyAT } from '@strapi/design-system';
|
|
4
4
|
import {
|
|
5
|
+
CheckPagePermissions,
|
|
6
|
+
LoadingIndicatorPage,
|
|
5
7
|
SettingsPageTitle,
|
|
6
|
-
|
|
8
|
+
useFocusWhenNavigate,
|
|
7
9
|
useNotification,
|
|
8
10
|
useOverlayBlocker,
|
|
9
|
-
CheckPagePermissions,
|
|
10
11
|
useRBAC,
|
|
11
|
-
|
|
12
|
-
LoadingIndicatorPage,
|
|
12
|
+
useTracking,
|
|
13
13
|
} from '@strapi/helper-plugin';
|
|
14
|
-
import {
|
|
15
|
-
import
|
|
14
|
+
import { useIntl } from 'react-intl';
|
|
15
|
+
import { useMutation, useQuery, useQueryClient } from 'react-query';
|
|
16
|
+
|
|
17
|
+
import { PERMISSIONS } from '../../constants';
|
|
16
18
|
import { getTrad } from '../../utils';
|
|
17
|
-
|
|
18
|
-
import EmailTable from './components/EmailTable';
|
|
19
|
+
|
|
19
20
|
import EmailForm from './components/EmailForm';
|
|
21
|
+
import EmailTable from './components/EmailTable';
|
|
22
|
+
import { fetchData, putEmailTemplate } from './utils/api';
|
|
20
23
|
|
|
21
24
|
const ProtectedEmailTemplatesPage = () => (
|
|
22
|
-
<CheckPagePermissions permissions={
|
|
25
|
+
<CheckPagePermissions permissions={PERMISSIONS.readEmailTemplates}>
|
|
23
26
|
<EmailTemplatesPage />
|
|
24
27
|
</CheckPagePermissions>
|
|
25
28
|
);
|
|
@@ -37,14 +40,10 @@ const EmailTemplatesPage = () => {
|
|
|
37
40
|
const [isModalOpen, setIsModalOpen] = useState(false);
|
|
38
41
|
const [templateToEdit, setTemplateToEdit] = useState(null);
|
|
39
42
|
|
|
40
|
-
const updatePermissions = useMemo(() => {
|
|
41
|
-
return { update: pluginPermissions.updateEmailTemplates };
|
|
42
|
-
}, []);
|
|
43
|
-
|
|
44
43
|
const {
|
|
45
44
|
isLoading: isLoadingForPermissions,
|
|
46
45
|
allowedActions: { canUpdate },
|
|
47
|
-
} = useRBAC(
|
|
46
|
+
} = useRBAC({ update: PERMISSIONS.updateEmailTemplates });
|
|
48
47
|
|
|
49
48
|
const { status: isLoadingData, data } = useQuery('email-templates', () => fetchData(), {
|
|
50
49
|
onSuccess() {
|
|
@@ -1,43 +1,46 @@
|
|
|
1
1
|
import React, { useMemo, useRef, useState } from 'react';
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
SettingsPageTitle,
|
|
5
|
-
LoadingIndicatorPage,
|
|
6
|
-
useTracking,
|
|
7
|
-
useNotification,
|
|
8
|
-
useOverlayBlocker,
|
|
9
|
-
CheckPagePermissions,
|
|
10
|
-
useRBAC,
|
|
11
|
-
useFocusWhenNavigate,
|
|
12
|
-
onRowClick,
|
|
13
|
-
stopPropagation,
|
|
14
|
-
} from '@strapi/helper-plugin';
|
|
15
|
-
import has from 'lodash/has';
|
|
16
|
-
import upperFirst from 'lodash/upperFirst';
|
|
2
|
+
|
|
17
3
|
import {
|
|
4
|
+
ContentLayout,
|
|
18
5
|
HeaderLayout,
|
|
6
|
+
IconButton,
|
|
19
7
|
Layout,
|
|
20
|
-
ContentLayout,
|
|
21
8
|
Main,
|
|
22
|
-
useNotifyAT,
|
|
23
9
|
Table,
|
|
24
|
-
Thead,
|
|
25
|
-
Tr,
|
|
26
|
-
Th,
|
|
27
10
|
Tbody,
|
|
28
11
|
Td,
|
|
12
|
+
Th,
|
|
13
|
+
Thead,
|
|
14
|
+
Tr,
|
|
29
15
|
Typography,
|
|
30
|
-
|
|
16
|
+
useNotifyAT,
|
|
31
17
|
VisuallyHidden,
|
|
32
18
|
} from '@strapi/design-system';
|
|
19
|
+
import {
|
|
20
|
+
CheckPagePermissions,
|
|
21
|
+
LoadingIndicatorPage,
|
|
22
|
+
onRowClick,
|
|
23
|
+
SettingsPageTitle,
|
|
24
|
+
stopPropagation,
|
|
25
|
+
useFocusWhenNavigate,
|
|
26
|
+
useNotification,
|
|
27
|
+
useOverlayBlocker,
|
|
28
|
+
useRBAC,
|
|
29
|
+
useTracking,
|
|
30
|
+
} from '@strapi/helper-plugin';
|
|
33
31
|
import { Pencil } from '@strapi/icons';
|
|
34
|
-
import
|
|
35
|
-
import
|
|
32
|
+
import has from 'lodash/has';
|
|
33
|
+
import upperFirst from 'lodash/upperFirst';
|
|
34
|
+
import { useIntl } from 'react-intl';
|
|
35
|
+
import { useMutation, useQuery, useQueryClient } from 'react-query';
|
|
36
|
+
|
|
37
|
+
import FormModal from '../../components/FormModal';
|
|
38
|
+
import { PERMISSIONS } from '../../constants';
|
|
39
|
+
import { getTrad } from '../../utils';
|
|
40
|
+
|
|
36
41
|
import { fetchData, putProvider } from './utils/api';
|
|
37
42
|
import createProvidersArray from './utils/createProvidersArray';
|
|
38
|
-
import
|
|
39
|
-
import pluginPermissions from '../../permissions';
|
|
40
|
-
import FormModal from '../../components/FormModal';
|
|
43
|
+
import forms from './utils/forms';
|
|
41
44
|
|
|
42
45
|
export const ProvidersPage = () => {
|
|
43
46
|
const { formatMessage } = useIntl();
|
|
@@ -52,14 +55,10 @@ export const ProvidersPage = () => {
|
|
|
52
55
|
const toggleNotification = useNotification();
|
|
53
56
|
const { lockApp, unlockApp } = useOverlayBlocker();
|
|
54
57
|
|
|
55
|
-
const updatePermissions = useMemo(() => {
|
|
56
|
-
return { update: pluginPermissions.updateProviders };
|
|
57
|
-
}, []);
|
|
58
|
-
|
|
59
58
|
const {
|
|
60
59
|
isLoading: isLoadingForPermissions,
|
|
61
60
|
allowedActions: { canUpdate },
|
|
62
|
-
} = useRBAC(
|
|
61
|
+
} = useRBAC({ update: PERMISSIONS.updateProviders });
|
|
63
62
|
|
|
64
63
|
const {
|
|
65
64
|
isLoading: isLoadingForData,
|
|
@@ -264,7 +263,7 @@ export const ProvidersPage = () => {
|
|
|
264
263
|
};
|
|
265
264
|
|
|
266
265
|
const ProtectedProvidersPage = () => (
|
|
267
|
-
<CheckPagePermissions permissions={
|
|
266
|
+
<CheckPagePermissions permissions={PERMISSIONS.readProviders}>
|
|
268
267
|
<ProvidersPage />
|
|
269
268
|
</CheckPagePermissions>
|
|
270
269
|
);
|
|
@@ -1,36 +1,39 @@
|
|
|
1
|
-
import React, {
|
|
2
|
-
|
|
1
|
+
import React, { useRef, useState } from 'react';
|
|
2
|
+
|
|
3
3
|
import {
|
|
4
|
+
Box,
|
|
5
|
+
Button,
|
|
4
6
|
ContentLayout,
|
|
7
|
+
Flex,
|
|
8
|
+
Grid,
|
|
9
|
+
GridItem,
|
|
5
10
|
HeaderLayout,
|
|
6
11
|
Main,
|
|
7
|
-
Button,
|
|
8
|
-
Flex,
|
|
9
|
-
Box,
|
|
10
|
-
TextInput,
|
|
11
12
|
Textarea,
|
|
13
|
+
TextInput,
|
|
12
14
|
Typography,
|
|
13
|
-
GridItem,
|
|
14
|
-
Grid,
|
|
15
15
|
} from '@strapi/design-system';
|
|
16
|
-
import { Check } from '@strapi/icons';
|
|
17
|
-
import { Formik } from 'formik';
|
|
18
|
-
import { useIntl } from 'react-intl';
|
|
19
16
|
import {
|
|
20
|
-
|
|
17
|
+
Form,
|
|
21
18
|
SettingsPageTitle,
|
|
22
19
|
useFetchClient,
|
|
23
|
-
useTracking,
|
|
24
|
-
Form,
|
|
25
20
|
useNotification,
|
|
21
|
+
useOverlayBlocker,
|
|
22
|
+
useTracking,
|
|
26
23
|
} from '@strapi/helper-plugin';
|
|
27
|
-
import
|
|
28
|
-
import
|
|
29
|
-
import
|
|
30
|
-
import {
|
|
31
|
-
|
|
24
|
+
import { Check } from '@strapi/icons';
|
|
25
|
+
import { Formik } from 'formik';
|
|
26
|
+
import { useIntl } from 'react-intl';
|
|
27
|
+
import { useHistory } from 'react-router-dom';
|
|
28
|
+
|
|
29
|
+
import UsersPermissions from '../../components/UsersPermissions';
|
|
30
|
+
import { usePlugins } from '../../hooks';
|
|
31
|
+
import pluginId from '../../pluginId';
|
|
32
|
+
import getTrad from '../../utils/getTrad';
|
|
33
|
+
|
|
34
|
+
import { createRoleSchema } from './constants';
|
|
32
35
|
|
|
33
|
-
const
|
|
36
|
+
const CreatePage = () => {
|
|
34
37
|
const { formatMessage } = useIntl();
|
|
35
38
|
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
36
39
|
const toggleNotification = useNotification();
|
|
@@ -82,7 +85,7 @@ const EditPage = () => {
|
|
|
82
85
|
enableReinitialize
|
|
83
86
|
initialValues={{ name: '', description: '' }}
|
|
84
87
|
onSubmit={handleCreateRoleSubmit}
|
|
85
|
-
validationSchema={
|
|
88
|
+
validationSchema={createRoleSchema}
|
|
86
89
|
>
|
|
87
90
|
{({ handleSubmit, values, handleChange, errors }) => (
|
|
88
91
|
<Form noValidate onSubmit={handleSubmit}>
|
|
@@ -143,7 +146,7 @@ const EditPage = () => {
|
|
|
143
146
|
</GridItem>
|
|
144
147
|
<GridItem col={6}>
|
|
145
148
|
<Textarea
|
|
146
|
-
|
|
149
|
+
id="description"
|
|
147
150
|
value={values.description || ''}
|
|
148
151
|
onChange={handleChange}
|
|
149
152
|
label={formatMessage({
|
|
@@ -179,4 +182,4 @@ const EditPage = () => {
|
|
|
179
182
|
);
|
|
180
183
|
};
|
|
181
184
|
|
|
182
|
-
export default
|
|
185
|
+
export default CreatePage;
|
|
@@ -1,16 +1,5 @@
|
|
|
1
|
-
import React, {
|
|
2
|
-
|
|
3
|
-
import { useIntl } from 'react-intl';
|
|
4
|
-
import { useRouteMatch } from 'react-router-dom';
|
|
5
|
-
import {
|
|
6
|
-
useFetchClient,
|
|
7
|
-
useOverlayBlocker,
|
|
8
|
-
SettingsPageTitle,
|
|
9
|
-
LoadingIndicatorPage,
|
|
10
|
-
Form,
|
|
11
|
-
useNotification,
|
|
12
|
-
Link,
|
|
13
|
-
} from '@strapi/helper-plugin';
|
|
1
|
+
import React, { useRef, useState } from 'react';
|
|
2
|
+
|
|
14
3
|
import {
|
|
15
4
|
ContentLayout,
|
|
16
5
|
HeaderLayout,
|
|
@@ -24,12 +13,26 @@ import {
|
|
|
24
13
|
GridItem,
|
|
25
14
|
Grid,
|
|
26
15
|
} from '@strapi/design-system';
|
|
16
|
+
import {
|
|
17
|
+
useFetchClient,
|
|
18
|
+
useOverlayBlocker,
|
|
19
|
+
SettingsPageTitle,
|
|
20
|
+
LoadingIndicatorPage,
|
|
21
|
+
Form,
|
|
22
|
+
useNotification,
|
|
23
|
+
Link,
|
|
24
|
+
} from '@strapi/helper-plugin';
|
|
27
25
|
import { ArrowLeft, Check } from '@strapi/icons';
|
|
28
|
-
import
|
|
29
|
-
import
|
|
30
|
-
import
|
|
31
|
-
|
|
32
|
-
import
|
|
26
|
+
import { Formik } from 'formik';
|
|
27
|
+
import { useIntl } from 'react-intl';
|
|
28
|
+
import { useRouteMatch } from 'react-router-dom';
|
|
29
|
+
|
|
30
|
+
import UsersPermissions from '../../components/UsersPermissions';
|
|
31
|
+
import { usePlugins, useFetchRole } from '../../hooks';
|
|
32
|
+
import pluginId from '../../pluginId';
|
|
33
|
+
import getTrad from '../../utils/getTrad';
|
|
34
|
+
|
|
35
|
+
import { createRoleSchema } from './constants';
|
|
33
36
|
|
|
34
37
|
const EditPage = () => {
|
|
35
38
|
const { formatMessage } = useIntl();
|
|
@@ -87,7 +90,7 @@ const EditPage = () => {
|
|
|
87
90
|
enableReinitialize
|
|
88
91
|
initialValues={{ name: role.name, description: role.description }}
|
|
89
92
|
onSubmit={handleEditRoleSubmit}
|
|
90
|
-
validationSchema={
|
|
93
|
+
validationSchema={createRoleSchema}
|
|
91
94
|
>
|
|
92
95
|
{({ handleSubmit, values, handleChange, errors }) => (
|
|
93
96
|
<Form noValidate onSubmit={handleSubmit}>
|
|
@@ -155,7 +158,7 @@ const EditPage = () => {
|
|
|
155
158
|
</GridItem>
|
|
156
159
|
<GridItem col={6}>
|
|
157
160
|
<Textarea
|
|
158
|
-
|
|
161
|
+
id="description"
|
|
159
162
|
value={values.description || ''}
|
|
160
163
|
onChange={handleChange}
|
|
161
164
|
label={formatMessage({
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
import { Pencil, Trash } from '@strapi/icons';
|
|
2
|
+
|
|
3
|
+
import { Flex, IconButton, Tbody, Td, Tr, Typography } from '@strapi/design-system';
|
|
5
4
|
import { CheckPermissions, onRowClick, stopPropagation } from '@strapi/helper-plugin';
|
|
5
|
+
import { Pencil, Trash } from '@strapi/icons';
|
|
6
|
+
import PropTypes from 'prop-types';
|
|
6
7
|
import { useIntl } from 'react-intl';
|
|
7
8
|
import { useHistory } from 'react-router-dom';
|
|
8
9
|
|
|
@@ -1,48 +1,51 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
|
|
2
3
|
import {
|
|
4
|
+
ActionLayout,
|
|
3
5
|
Button,
|
|
6
|
+
ContentLayout,
|
|
4
7
|
HeaderLayout,
|
|
5
8
|
Layout,
|
|
6
|
-
ContentLayout,
|
|
7
|
-
ActionLayout,
|
|
8
9
|
Main,
|
|
9
10
|
Table,
|
|
10
|
-
Tr,
|
|
11
|
-
Thead,
|
|
12
11
|
Th,
|
|
12
|
+
Thead,
|
|
13
|
+
Tr,
|
|
13
14
|
Typography,
|
|
14
15
|
useNotifyAT,
|
|
15
16
|
VisuallyHidden,
|
|
16
17
|
} from '@strapi/design-system';
|
|
17
|
-
import { Plus } from '@strapi/icons';
|
|
18
18
|
import {
|
|
19
|
-
useTracking,
|
|
20
|
-
SettingsPageTitle,
|
|
21
19
|
CheckPermissions,
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
NoPermissions,
|
|
20
|
+
ConfirmDialog,
|
|
21
|
+
EmptyStateLayout,
|
|
25
22
|
LoadingIndicatorPage,
|
|
23
|
+
NoPermissions,
|
|
26
24
|
SearchURLQuery,
|
|
25
|
+
SettingsPageTitle,
|
|
26
|
+
useCollator,
|
|
27
|
+
useFilter,
|
|
27
28
|
useFocusWhenNavigate,
|
|
29
|
+
useNotification,
|
|
28
30
|
useQueryParams,
|
|
29
|
-
|
|
30
|
-
|
|
31
|
+
useRBAC,
|
|
32
|
+
useTracking,
|
|
31
33
|
} from '@strapi/helper-plugin';
|
|
34
|
+
import { Plus } from '@strapi/icons';
|
|
32
35
|
import { useIntl } from 'react-intl';
|
|
36
|
+
import { useMutation, useQuery } from 'react-query';
|
|
33
37
|
import { useHistory } from 'react-router-dom';
|
|
34
|
-
import { useMutation, useQuery, useQueryClient } from 'react-query';
|
|
35
|
-
import matchSorter from 'match-sorter';
|
|
36
38
|
|
|
37
|
-
import {
|
|
38
|
-
import { getTrad } from '../../../utils';
|
|
39
|
+
import { PERMISSIONS } from '../../../constants';
|
|
39
40
|
import pluginId from '../../../pluginId';
|
|
40
|
-
import
|
|
41
|
+
import { getTrad } from '../../../utils';
|
|
42
|
+
|
|
41
43
|
import TableBody from './components/TableBody';
|
|
44
|
+
import { deleteData, fetchData } from './utils/api';
|
|
42
45
|
|
|
43
46
|
const RoleListPage = () => {
|
|
44
47
|
const { trackUsage } = useTracking();
|
|
45
|
-
const { formatMessage } = useIntl();
|
|
48
|
+
const { formatMessage, locale } = useIntl();
|
|
46
49
|
const { push } = useHistory();
|
|
47
50
|
const toggleNotification = useNotification();
|
|
48
51
|
const { notifyStatus } = useNotifyAT();
|
|
@@ -53,31 +56,37 @@ const RoleListPage = () => {
|
|
|
53
56
|
const [roleToDelete, setRoleToDelete] = useState();
|
|
54
57
|
useFocusWhenNavigate();
|
|
55
58
|
|
|
56
|
-
const queryClient = useQueryClient();
|
|
57
|
-
|
|
58
|
-
const updatePermissions = useMemo(() => {
|
|
59
|
-
return {
|
|
60
|
-
create: permissions.createRole,
|
|
61
|
-
read: permissions.readRoles,
|
|
62
|
-
update: permissions.updateRole,
|
|
63
|
-
delete: permissions.deleteRole,
|
|
64
|
-
};
|
|
65
|
-
}, []);
|
|
66
|
-
|
|
67
59
|
const {
|
|
68
60
|
isLoading: isLoadingForPermissions,
|
|
69
61
|
allowedActions: { canRead, canDelete },
|
|
70
|
-
} = useRBAC(
|
|
62
|
+
} = useRBAC({
|
|
63
|
+
create: PERMISSIONS.createRole,
|
|
64
|
+
read: PERMISSIONS.readRoles,
|
|
65
|
+
update: PERMISSIONS.updateRole,
|
|
66
|
+
delete: PERMISSIONS.deleteRole,
|
|
67
|
+
});
|
|
71
68
|
|
|
72
69
|
const {
|
|
73
70
|
isLoading: isLoadingForData,
|
|
74
71
|
data: { roles },
|
|
75
72
|
isFetching,
|
|
73
|
+
refetch,
|
|
76
74
|
} = useQuery('get-roles', () => fetchData(toggleNotification, notifyStatus), {
|
|
77
75
|
initialData: {},
|
|
78
76
|
enabled: canRead,
|
|
79
77
|
});
|
|
80
78
|
|
|
79
|
+
const { includes } = useFilter(locale, {
|
|
80
|
+
sensitivity: 'base',
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* @type {Intl.Collator}
|
|
85
|
+
*/
|
|
86
|
+
const formatter = useCollator(locale, {
|
|
87
|
+
sensitivity: 'base',
|
|
88
|
+
});
|
|
89
|
+
|
|
81
90
|
const isLoading = isLoadingForData || isFetching;
|
|
82
91
|
|
|
83
92
|
const handleNewRoleClick = () => {
|
|
@@ -107,7 +116,7 @@ const RoleListPage = () => {
|
|
|
107
116
|
|
|
108
117
|
const deleteMutation = useMutation((id) => deleteData(id, toggleNotification), {
|
|
109
118
|
async onSuccess() {
|
|
110
|
-
await
|
|
119
|
+
await refetch();
|
|
111
120
|
},
|
|
112
121
|
});
|
|
113
122
|
|
|
@@ -118,7 +127,12 @@ const RoleListPage = () => {
|
|
|
118
127
|
setIsConfirmButtonLoading(false);
|
|
119
128
|
};
|
|
120
129
|
|
|
121
|
-
const sortedRoles =
|
|
130
|
+
const sortedRoles = (roles || [])
|
|
131
|
+
.filter((role) => includes(role.name, _q) || includes(role.description, _q))
|
|
132
|
+
.sort(
|
|
133
|
+
(a, b) => formatter.compare(a.name, b.name) || formatter.compare(a.description, b.description)
|
|
134
|
+
);
|
|
135
|
+
|
|
122
136
|
const emptyContent = _q && !sortedRoles.length ? 'search' : 'roles';
|
|
123
137
|
|
|
124
138
|
const colCount = 4;
|
|
@@ -138,7 +152,7 @@ const RoleListPage = () => {
|
|
|
138
152
|
defaultMessage: 'List of roles',
|
|
139
153
|
})}
|
|
140
154
|
primaryAction={
|
|
141
|
-
<CheckPermissions permissions={
|
|
155
|
+
<CheckPermissions permissions={PERMISSIONS.createRole}>
|
|
142
156
|
<Button onClick={handleNewRoleClick} startIcon={<Plus />} size="S">
|
|
143
157
|
{formatMessage({
|
|
144
158
|
id: getTrad('List.button.roles'),
|
|
@@ -201,7 +215,7 @@ const RoleListPage = () => {
|
|
|
201
215
|
<TableBody
|
|
202
216
|
sortedRoles={sortedRoles}
|
|
203
217
|
canDelete={canDelete}
|
|
204
|
-
permissions={
|
|
218
|
+
permissions={PERMISSIONS}
|
|
205
219
|
setRoleToDelete={setRoleToDelete}
|
|
206
220
|
onDelete={[showConfirmDelete, setShowConfirmDelete]}
|
|
207
221
|
/>
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { getFetchClient } from '@strapi/helper-plugin';
|
|
2
|
+
|
|
2
3
|
import { getRequestURL } from '../../../../utils';
|
|
3
4
|
|
|
4
5
|
export const fetchData = async (toggleNotification, notifyStatus) => {
|
|
@@ -14,7 +15,7 @@ export const fetchData = async (toggleNotification, notifyStatus) => {
|
|
|
14
15
|
message: { id: 'notification.error' },
|
|
15
16
|
});
|
|
16
17
|
|
|
17
|
-
throw new Error(
|
|
18
|
+
throw new Error(err);
|
|
18
19
|
}
|
|
19
20
|
};
|
|
20
21
|
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
|
|
2
3
|
import { CheckPagePermissions } from '@strapi/helper-plugin';
|
|
3
|
-
|
|
4
|
-
import
|
|
4
|
+
|
|
5
|
+
import { PERMISSIONS } from '../../constants';
|
|
6
|
+
|
|
7
|
+
import RolesCreatePage from './CreatePage';
|
|
5
8
|
|
|
6
9
|
const ProtectedRolesCreatePage = () => (
|
|
7
|
-
<CheckPagePermissions permissions={
|
|
10
|
+
<CheckPagePermissions permissions={PERMISSIONS.createRole}>
|
|
8
11
|
<RolesCreatePage />
|
|
9
12
|
</CheckPagePermissions>
|
|
10
13
|
);
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
|
|
2
3
|
import { CheckPagePermissions } from '@strapi/helper-plugin';
|
|
3
|
-
|
|
4
|
-
import
|
|
4
|
+
|
|
5
|
+
import { PERMISSIONS } from '../../constants';
|
|
6
|
+
|
|
7
|
+
import RolesEditPage from './EditPage';
|
|
5
8
|
|
|
6
9
|
const ProtectedRolesEditPage = () => (
|
|
7
|
-
<CheckPagePermissions permissions={
|
|
10
|
+
<CheckPagePermissions permissions={PERMISSIONS.updateRole}>
|
|
8
11
|
<RolesEditPage />
|
|
9
12
|
</CheckPagePermissions>
|
|
10
13
|
);
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
|
|
2
3
|
import { CheckPagePermissions } from '@strapi/helper-plugin';
|
|
3
|
-
import pluginPermissions from '../../../permissions';
|
|
4
4
|
|
|
5
|
-
import
|
|
5
|
+
import { PERMISSIONS } from '../../constants';
|
|
6
|
+
|
|
7
|
+
import RolesListPage from './ListPage';
|
|
6
8
|
|
|
7
9
|
const ProtectedRolesListPage = () => {
|
|
8
10
|
return (
|
|
9
|
-
<CheckPagePermissions permissions={
|
|
11
|
+
<CheckPagePermissions permissions={PERMISSIONS.accessRoles}>
|
|
10
12
|
<RolesListPage />
|
|
11
13
|
</CheckPagePermissions>
|
|
12
14
|
);
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import * as yup from 'yup';
|
|
2
1
|
import { translatedErrors } from '@strapi/helper-plugin';
|
|
2
|
+
import * as yup from 'yup';
|
|
3
3
|
|
|
4
|
-
const
|
|
4
|
+
export const createRoleSchema = yup.object().shape({
|
|
5
5
|
name: yup.string().required(translatedErrors.required),
|
|
6
6
|
description: yup.string().required(translatedErrors.required),
|
|
7
7
|
});
|
|
8
|
-
|
|
9
|
-
export default schema;
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
|
|
3
|
-
import {
|
|
2
|
+
|
|
3
|
+
import { AnErrorOccurred, CheckPagePermissions } from '@strapi/helper-plugin';
|
|
4
|
+
import { Route, Switch } from 'react-router-dom';
|
|
5
|
+
|
|
6
|
+
import { PERMISSIONS } from '../../constants';
|
|
4
7
|
import pluginId from '../../pluginId';
|
|
5
|
-
|
|
6
|
-
import ProtectedRolesListPage from './ProtectedListPage';
|
|
7
|
-
import ProtectedRolesEditPage from './ProtectedEditPage';
|
|
8
|
+
|
|
8
9
|
import ProtectedRolesCreatePage from './ProtectedCreatePage';
|
|
10
|
+
import ProtectedRolesEditPage from './ProtectedEditPage';
|
|
11
|
+
import ProtectedRolesListPage from './ProtectedListPage';
|
|
9
12
|
|
|
10
13
|
const Roles = () => {
|
|
11
14
|
return (
|
|
12
|
-
<CheckPagePermissions permissions={
|
|
15
|
+
<CheckPagePermissions permissions={PERMISSIONS.accessRoles}>
|
|
13
16
|
<Switch>
|
|
14
17
|
<Route
|
|
15
18
|
path={`/settings/${pluginId}/roles/new`}
|