@strapi/plugin-users-permissions 4.20.5 → 5.0.0-alpha.1
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/FormModal/index.jsx +1 -2
- package/admin/src/components/Permissions/reducer.js +1 -1
- package/admin/src/components/UsersPermissions/reducer.js +1 -1
- package/admin/src/index.js +15 -32
- package/admin/src/pages/AdvancedSettings/index.jsx +72 -112
- package/admin/src/pages/AdvancedSettings/utils/layout.js +20 -35
- package/admin/src/pages/AdvancedSettings/utils/schema.js +5 -2
- package/admin/src/pages/EmailTemplates/components/EmailForm.jsx +47 -74
- package/admin/src/pages/EmailTemplates/components/EmailTable.jsx +4 -5
- package/admin/src/pages/EmailTemplates/index.jsx +25 -55
- package/admin/src/pages/EmailTemplates/utils/schema.js +18 -6
- package/admin/src/pages/Providers/index.jsx +91 -108
- package/admin/src/pages/Providers/utils/forms.js +11 -11
- package/admin/src/pages/Roles/constants.js +3 -3
- package/admin/src/pages/Roles/hooks/usePlugins.js +4 -4
- package/admin/src/pages/Roles/index.jsx +9 -18
- package/admin/src/pages/Roles/pages/CreatePage.jsx +20 -28
- package/admin/src/pages/Roles/pages/EditPage.jsx +25 -37
- package/admin/src/pages/Roles/pages/ListPage/components/TableBody.jsx +23 -28
- package/admin/src/pages/Roles/pages/ListPage/index.jsx +73 -42
- package/admin/src/translations/en.json +1 -1
- package/admin/src/utils/prefixPluginTranslations.js +13 -0
- package/dist/_chunks/EditViewPage-kgrZ8rEg-6k5dfk_x.js +84412 -0
- package/dist/_chunks/EditViewPage-kgrZ8rEg-6k5dfk_x.js.map +1 -0
- package/dist/_chunks/EditViewPage-kgrZ8rEg-GlayP0Uq.mjs +84382 -0
- package/dist/_chunks/EditViewPage-kgrZ8rEg-GlayP0Uq.mjs.map +1 -0
- package/dist/_chunks/Helmet-d9JljxUo.js +1010 -0
- package/dist/_chunks/Helmet-d9JljxUo.js.map +1 -0
- package/dist/_chunks/Helmet-kyJ1Zklj.mjs +1008 -0
- package/dist/_chunks/Helmet-kyJ1Zklj.mjs.map +1 -0
- package/dist/_chunks/ListViewPage-BNB0ptO7-TUQO_9Hj.js +1617 -0
- package/dist/_chunks/ListViewPage-BNB0ptO7-TUQO_9Hj.js.map +1 -0
- package/dist/_chunks/ListViewPage-BNB0ptO7-t1ra9JlI.mjs +1594 -0
- package/dist/_chunks/ListViewPage-BNB0ptO7-t1ra9JlI.mjs.map +1 -0
- package/dist/_chunks/ReviewWorkflowsColumn-56Z6l-FH-3Dq1lGu9.js +33 -0
- package/dist/_chunks/ReviewWorkflowsColumn-56Z6l-FH-3Dq1lGu9.js.map +1 -0
- package/dist/_chunks/ReviewWorkflowsColumn-56Z6l-FH-mpkuW-HV.mjs +33 -0
- package/dist/_chunks/ReviewWorkflowsColumn-56Z6l-FH-mpkuW-HV.mjs.map +1 -0
- package/dist/_chunks/constants-evLWZCaJ-0QLv9QPI.mjs +190 -0
- package/dist/_chunks/constants-evLWZCaJ-0QLv9QPI.mjs.map +1 -0
- package/dist/_chunks/constants-evLWZCaJ-dGs71EWl.js +209 -0
- package/dist/_chunks/constants-evLWZCaJ-dGs71EWl.js.map +1 -0
- package/dist/_chunks/{en-m608rMZx.js → en-TaNIVnDO.js} +2 -2
- package/dist/_chunks/en-TaNIVnDO.js.map +1 -0
- package/dist/_chunks/{en-CE3wEy_c.mjs → en-jvJ-d-Qq.mjs} +2 -2
- package/dist/_chunks/en-jvJ-d-Qq.mjs.map +1 -0
- package/dist/_chunks/{index-XqdaO5WZ.js → index-6E51D69B.js} +149 -149
- package/dist/_chunks/index-6E51D69B.js.map +1 -0
- package/dist/_chunks/index-BGIcvvEB.mjs +260 -0
- package/dist/_chunks/index-BGIcvvEB.mjs.map +1 -0
- package/dist/_chunks/{index-6Kdo3KXv.js → index-Bg2Rf_5y.js} +112 -154
- package/dist/_chunks/index-Bg2Rf_5y.js.map +1 -0
- package/dist/_chunks/index-LpFmy25n.js +279 -0
- package/dist/_chunks/index-LpFmy25n.js.map +1 -0
- package/dist/_chunks/{index-a9oKDd3C.mjs → index-R05CeNXG.mjs} +106 -148
- package/dist/_chunks/index-R05CeNXG.mjs.map +1 -0
- package/dist/_chunks/index-YFPS5vYF-ZGkR3L1g.js +16558 -0
- package/dist/_chunks/index-YFPS5vYF-ZGkR3L1g.js.map +1 -0
- package/dist/_chunks/index-YFPS5vYF-cugkJcLS.mjs +16533 -0
- package/dist/_chunks/index-YFPS5vYF-cugkJcLS.mjs.map +1 -0
- package/dist/_chunks/{index-ethhTEkj.mjs → index-aEKi1Qb9.mjs} +39 -36
- package/dist/_chunks/index-aEKi1Qb9.mjs.map +1 -0
- package/dist/_chunks/{index-rryiT0-Z.mjs → index-hG66XSuA.mjs} +131 -130
- package/dist/_chunks/index-hG66XSuA.mjs.map +1 -0
- package/dist/_chunks/{index-iNtwnT3f.mjs → index-xt3l4qU9.mjs} +35 -35
- package/dist/_chunks/index-xt3l4qU9.mjs.map +1 -0
- package/dist/_chunks/{index-O9AAUvyy.js → index-yKMi8hKt.js} +36 -36
- package/dist/_chunks/index-yKMi8hKt.js.map +1 -0
- package/dist/_chunks/{index-1uupZmu0.js → index-ylhaoJtw.js} +43 -40
- package/dist/_chunks/index-ylhaoJtw.js.map +1 -0
- package/dist/_chunks/useSyncRbac-83vFRiaG-YY4KQcAU.js +57 -0
- package/dist/_chunks/useSyncRbac-83vFRiaG-YY4KQcAU.js.map +1 -0
- package/dist/_chunks/useSyncRbac-83vFRiaG-ov11t-T1.mjs +39 -0
- package/dist/_chunks/useSyncRbac-83vFRiaG-ov11t-T1.mjs.map +1 -0
- package/dist/admin/index.js +1 -2
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +1 -2
- package/dist/admin/index.mjs.map +1 -1
- package/dist/style.css +84 -0
- package/package.json +13 -13
- package/server/bootstrap/grant-config.js +9 -0
- package/server/bootstrap/index.js +2 -39
- package/server/content-types/user/index.js +0 -1
- package/server/controllers/auth.js +24 -53
- package/server/controllers/content-manager-user.js +24 -28
- package/server/controllers/role.js +1 -1
- package/server/controllers/user.js +5 -5
- package/server/middlewares/rateLimit.js +1 -1
- package/server/register.js +1 -1
- package/server/services/jwt.js +3 -3
- package/server/services/permission.js +3 -7
- package/server/services/providers-registry.js +15 -0
- package/server/services/providers.js +10 -5
- package/server/services/role.js +15 -13
- package/server/services/user.js +28 -14
- package/server/services/users-permissions.js +12 -10
- package/server/utils/sanitize/sanitizers.js +2 -2
- package/admin/src/pages/Roles/pages/ListPage/utils/api.js +0 -30
- package/dist/_chunks/en-CE3wEy_c.mjs.map +0 -1
- package/dist/_chunks/en-m608rMZx.js.map +0 -1
- package/dist/_chunks/index-1uupZmu0.js.map +0 -1
- package/dist/_chunks/index-6Kdo3KXv.js.map +0 -1
- package/dist/_chunks/index-O9AAUvyy.js.map +0 -1
- package/dist/_chunks/index-Un-J-cxQ.js +0 -320
- package/dist/_chunks/index-Un-J-cxQ.js.map +0 -1
- package/dist/_chunks/index-X0yw_GgN.mjs +0 -301
- package/dist/_chunks/index-X0yw_GgN.mjs.map +0 -1
- package/dist/_chunks/index-XqdaO5WZ.js.map +0 -1
- package/dist/_chunks/index-a9oKDd3C.mjs.map +0 -1
- package/dist/_chunks/index-ethhTEkj.mjs.map +0 -1
- package/dist/_chunks/index-iNtwnT3f.mjs.map +0 -1
- package/dist/_chunks/index-rryiT0-Z.mjs.map +0 -1
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
4
|
const React = require("react");
|
|
5
|
-
const
|
|
5
|
+
const admin = require("@strapi/strapi/admin");
|
|
6
6
|
const reactRouterDom = require("react-router-dom");
|
|
7
|
-
const index = require("./index-
|
|
7
|
+
const index = require("./index-yKMi8hKt.js");
|
|
8
8
|
const designSystem = require("@strapi/design-system");
|
|
9
|
-
const
|
|
9
|
+
const Icons = require("@strapi/icons");
|
|
10
10
|
const formik = require("formik");
|
|
11
|
+
const Helmet = require("./Helmet-d9JljxUo.js");
|
|
11
12
|
const reactIntl = require("react-intl");
|
|
12
13
|
const reactQuery = require("react-query");
|
|
13
14
|
const PropTypes = require("prop-types");
|
|
@@ -15,7 +16,7 @@ const upperFirst = require("lodash/upperFirst");
|
|
|
15
16
|
const sortBy = require("lodash/sortBy");
|
|
16
17
|
const get = require("lodash/get");
|
|
17
18
|
const styled = require("styled-components");
|
|
18
|
-
const
|
|
19
|
+
const createNextState2 = require("immer");
|
|
19
20
|
const isEmpty = require("lodash/isEmpty");
|
|
20
21
|
const without = require("lodash/without");
|
|
21
22
|
const map = require("lodash/map");
|
|
@@ -23,6 +24,8 @@ const tail = require("lodash/tail");
|
|
|
23
24
|
const set = require("lodash/set");
|
|
24
25
|
const take = require("lodash/take");
|
|
25
26
|
const yup = require("yup");
|
|
27
|
+
const v2 = require("@strapi/design-system/v2");
|
|
28
|
+
const helperPlugin = require("@strapi/helper-plugin");
|
|
26
29
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
27
30
|
function _interopNamespace(e) {
|
|
28
31
|
if (e && e.__esModule)
|
|
@@ -48,7 +51,6 @@ const upperFirst__default = /* @__PURE__ */ _interopDefault(upperFirst);
|
|
|
48
51
|
const sortBy__default = /* @__PURE__ */ _interopDefault(sortBy);
|
|
49
52
|
const get__default = /* @__PURE__ */ _interopDefault(get);
|
|
50
53
|
const styled__default = /* @__PURE__ */ _interopDefault(styled);
|
|
51
|
-
const produce__default = /* @__PURE__ */ _interopDefault(produce);
|
|
52
54
|
const isEmpty__default = /* @__PURE__ */ _interopDefault(isEmpty);
|
|
53
55
|
const without__default = /* @__PURE__ */ _interopDefault(without);
|
|
54
56
|
const map__default = /* @__PURE__ */ _interopDefault(map);
|
|
@@ -187,7 +189,7 @@ const SubCategory = ({ subCategory }) => {
|
|
|
187
189
|
route: action.name
|
|
188
190
|
}
|
|
189
191
|
) }),
|
|
190
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
192
|
+
/* @__PURE__ */ jsxRuntime.jsx(Icons.Cog, {})
|
|
191
193
|
]
|
|
192
194
|
}
|
|
193
195
|
)
|
|
@@ -239,7 +241,7 @@ const initialState$1 = {
|
|
|
239
241
|
};
|
|
240
242
|
const reducer$1 = (state, action) => (
|
|
241
243
|
// eslint-disable-next-line consistent-return
|
|
242
|
-
|
|
244
|
+
createNextState2.produce(state, (draftState) => {
|
|
243
245
|
switch (action.type) {
|
|
244
246
|
case "TOGGLE_COLLAPSE": {
|
|
245
247
|
draftState.collapses = state.collapses.map((collapse, index2) => {
|
|
@@ -427,7 +429,7 @@ const initialState = {
|
|
|
427
429
|
selectedAction: "",
|
|
428
430
|
policies: []
|
|
429
431
|
};
|
|
430
|
-
const reducer = (state, action) =>
|
|
432
|
+
const reducer = (state, action) => createNextState2.produce(state, (draftState) => {
|
|
431
433
|
switch (action.type) {
|
|
432
434
|
case "ON_CHANGE": {
|
|
433
435
|
const keysLength = action.keys.length;
|
|
@@ -529,8 +531,8 @@ UsersPermissions.propTypes = {
|
|
|
529
531
|
};
|
|
530
532
|
const UsersPermissions$1 = React.memo(UsersPermissions);
|
|
531
533
|
const createRoleSchema = yup__namespace.object().shape({
|
|
532
|
-
name: yup__namespace.string().required(
|
|
533
|
-
description: yup__namespace.string().required(
|
|
534
|
+
name: yup__namespace.string().required(admin.translatedErrors.required.id),
|
|
535
|
+
description: yup__namespace.string().required(admin.translatedErrors.required.id)
|
|
534
536
|
});
|
|
535
537
|
const cleanPermissions = (permissions) => Object.keys(permissions).reduce((acc, current) => {
|
|
536
538
|
const currentPermission = permissions[current].controllers;
|
|
@@ -548,9 +550,9 @@ const cleanPermissions = (permissions) => Object.keys(permissions).reduce((acc,
|
|
|
548
550
|
return acc;
|
|
549
551
|
}, {});
|
|
550
552
|
const usePlugins = () => {
|
|
551
|
-
const toggleNotification =
|
|
552
|
-
const { get: get2 } =
|
|
553
|
-
const { formatAPIError } =
|
|
553
|
+
const { toggleNotification } = admin.useNotification();
|
|
554
|
+
const { get: get2 } = admin.useFetchClient();
|
|
555
|
+
const { formatAPIError } = admin.useAPIErrorHandler(index.getTrad);
|
|
554
556
|
const [
|
|
555
557
|
{
|
|
556
558
|
data: permissions,
|
|
@@ -585,7 +587,7 @@ const usePlugins = () => {
|
|
|
585
587
|
React.useEffect(() => {
|
|
586
588
|
if (permissionsError) {
|
|
587
589
|
toggleNotification({
|
|
588
|
-
type: "
|
|
590
|
+
type: "danger",
|
|
589
591
|
message: formatAPIError(permissionsError)
|
|
590
592
|
});
|
|
591
593
|
}
|
|
@@ -593,7 +595,7 @@ const usePlugins = () => {
|
|
|
593
595
|
React.useEffect(() => {
|
|
594
596
|
if (routesError) {
|
|
595
597
|
toggleNotification({
|
|
596
|
-
type: "
|
|
598
|
+
type: "danger",
|
|
597
599
|
message: formatAPIError(routesError)
|
|
598
600
|
});
|
|
599
601
|
}
|
|
@@ -611,43 +613,48 @@ const usePlugins = () => {
|
|
|
611
613
|
};
|
|
612
614
|
const CreatePage = () => {
|
|
613
615
|
const { formatMessage } = reactIntl.useIntl();
|
|
614
|
-
const toggleNotification =
|
|
615
|
-
const
|
|
616
|
-
const { lockApp, unlockApp } = helperPlugin.useOverlayBlocker();
|
|
616
|
+
const { toggleNotification } = admin.useNotification();
|
|
617
|
+
const navigate = reactRouterDom.useNavigate();
|
|
617
618
|
const { isLoading: isLoadingPlugins, permissions, routes } = usePlugins();
|
|
618
|
-
const { trackUsage } =
|
|
619
|
+
const { trackUsage } = admin.useTracking();
|
|
619
620
|
const permissionsRef = React__namespace.useRef();
|
|
620
|
-
const { post } =
|
|
621
|
+
const { post } = admin.useFetchClient();
|
|
621
622
|
const mutation = reactQuery.useMutation((body) => post(`/users-permissions/roles`, body), {
|
|
622
623
|
onError() {
|
|
623
624
|
toggleNotification({
|
|
624
|
-
type: "
|
|
625
|
-
message: {
|
|
625
|
+
type: "danger",
|
|
626
|
+
message: formatMessage({
|
|
626
627
|
id: "notification.error",
|
|
627
628
|
defaultMessage: "An error occurred"
|
|
628
|
-
}
|
|
629
|
+
})
|
|
629
630
|
});
|
|
630
631
|
},
|
|
631
632
|
onSuccess() {
|
|
632
633
|
trackUsage("didCreateRole");
|
|
633
634
|
toggleNotification({
|
|
634
635
|
type: "success",
|
|
635
|
-
message: {
|
|
636
|
+
message: formatMessage({
|
|
636
637
|
id: index.getTrad("Settings.roles.created"),
|
|
637
638
|
defaultMessage: "Role created"
|
|
638
|
-
}
|
|
639
|
+
})
|
|
639
640
|
});
|
|
640
|
-
|
|
641
|
+
navigate(-1);
|
|
641
642
|
}
|
|
642
643
|
});
|
|
643
644
|
const handleCreateRoleSubmit = async (data) => {
|
|
644
|
-
lockApp();
|
|
645
645
|
const permissions2 = permissionsRef.current.getPermissions();
|
|
646
646
|
await mutation.mutate({ ...data, ...permissions2, users: [] });
|
|
647
|
-
unlockApp();
|
|
648
647
|
};
|
|
649
648
|
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Main, { children: [
|
|
650
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
649
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
650
|
+
Helmet.HelmetExport,
|
|
651
|
+
{
|
|
652
|
+
title: formatMessage(
|
|
653
|
+
{ id: "Settings.PageTitle", defaultMessage: "Settings - {name}" },
|
|
654
|
+
{ name: "Roles" }
|
|
655
|
+
)
|
|
656
|
+
}
|
|
657
|
+
),
|
|
651
658
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
652
659
|
formik.Formik,
|
|
653
660
|
{
|
|
@@ -655,11 +662,11 @@ const CreatePage = () => {
|
|
|
655
662
|
initialValues: { name: "", description: "" },
|
|
656
663
|
onSubmit: handleCreateRoleSubmit,
|
|
657
664
|
validationSchema: createRoleSchema,
|
|
658
|
-
children: ({ handleSubmit, values, handleChange, errors }) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
665
|
+
children: ({ handleSubmit, values, handleChange, errors }) => /* @__PURE__ */ jsxRuntime.jsxs(formik.Form, { noValidate: true, onSubmit: handleSubmit, children: [
|
|
659
666
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
660
667
|
designSystem.HeaderLayout,
|
|
661
668
|
{
|
|
662
|
-
primaryAction: !isLoadingPlugins && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { type: "submit", loading: mutation.isLoading, startIcon: /* @__PURE__ */ jsxRuntime.jsx(
|
|
669
|
+
primaryAction: !isLoadingPlugins && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { type: "submit", loading: mutation.isLoading, startIcon: /* @__PURE__ */ jsxRuntime.jsx(Icons.Check, {}), children: formatMessage({
|
|
663
670
|
id: "global.save",
|
|
664
671
|
defaultMessage: "Save"
|
|
665
672
|
}) }),
|
|
@@ -742,15 +749,14 @@ const CreatePage = () => {
|
|
|
742
749
|
)
|
|
743
750
|
] });
|
|
744
751
|
};
|
|
745
|
-
const ProtectedRolesCreatePage = () => /* @__PURE__ */ jsxRuntime.jsx(
|
|
752
|
+
const ProtectedRolesCreatePage = () => /* @__PURE__ */ jsxRuntime.jsx(admin.Page.Protect, { permissions: index.PERMISSIONS.createRole, children: /* @__PURE__ */ jsxRuntime.jsx(CreatePage, {}) });
|
|
746
753
|
const EditPage = () => {
|
|
747
754
|
const { formatMessage } = reactIntl.useIntl();
|
|
748
|
-
const toggleNotification =
|
|
749
|
-
const { lockApp, unlockApp } = helperPlugin.useOverlayBlocker();
|
|
755
|
+
const { toggleNotification } = admin.useNotification();
|
|
750
756
|
const {
|
|
751
757
|
params: { id }
|
|
752
|
-
} = reactRouterDom.
|
|
753
|
-
const { get: get2 } =
|
|
758
|
+
} = reactRouterDom.useMatch(`/settings/users-permissions/roles/:id`);
|
|
759
|
+
const { get: get2 } = admin.useFetchClient();
|
|
754
760
|
const { isLoading: isLoadingPlugins, routes } = usePlugins();
|
|
755
761
|
const {
|
|
756
762
|
data: role,
|
|
@@ -763,37 +769,43 @@ const EditPage = () => {
|
|
|
763
769
|
return role2;
|
|
764
770
|
});
|
|
765
771
|
const permissionsRef = React__namespace.useRef();
|
|
766
|
-
const { put } =
|
|
767
|
-
const { formatAPIError } =
|
|
772
|
+
const { put } = admin.useFetchClient();
|
|
773
|
+
const { formatAPIError } = admin.useAPIErrorHandler();
|
|
768
774
|
const mutation = reactQuery.useMutation((body) => put(`/users-permissions/roles/${id}`, body), {
|
|
769
775
|
onError(error) {
|
|
770
776
|
toggleNotification({
|
|
771
|
-
type: "
|
|
777
|
+
type: "danger",
|
|
772
778
|
message: formatAPIError(error)
|
|
773
779
|
});
|
|
774
780
|
},
|
|
775
781
|
async onSuccess() {
|
|
776
782
|
toggleNotification({
|
|
777
783
|
type: "success",
|
|
778
|
-
message: {
|
|
784
|
+
message: formatMessage({
|
|
779
785
|
id: index.getTrad("Settings.roles.created"),
|
|
780
786
|
defaultMessage: "Role edited"
|
|
781
|
-
}
|
|
787
|
+
})
|
|
782
788
|
});
|
|
783
789
|
await refetchRole();
|
|
784
790
|
}
|
|
785
791
|
});
|
|
786
792
|
const handleEditRoleSubmit = async (data) => {
|
|
787
|
-
lockApp();
|
|
788
793
|
const permissions = permissionsRef.current.getPermissions();
|
|
789
794
|
await mutation.mutate({ ...data, ...permissions, users: [] });
|
|
790
|
-
unlockApp();
|
|
791
795
|
};
|
|
792
796
|
if (isLoadingRole) {
|
|
793
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
797
|
+
return /* @__PURE__ */ jsxRuntime.jsx(admin.Page.Loading, {});
|
|
794
798
|
}
|
|
795
799
|
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Main, { children: [
|
|
796
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
800
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
801
|
+
Helmet.HelmetExport,
|
|
802
|
+
{
|
|
803
|
+
title: formatMessage(
|
|
804
|
+
{ id: "Settings.PageTitle", defaultMessage: "Settings - {name}" },
|
|
805
|
+
{ name: "Roles" }
|
|
806
|
+
)
|
|
807
|
+
}
|
|
808
|
+
),
|
|
797
809
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
798
810
|
formik.Formik,
|
|
799
811
|
{
|
|
@@ -801,29 +813,26 @@ const EditPage = () => {
|
|
|
801
813
|
initialValues: { name: role.name, description: role.description },
|
|
802
814
|
onSubmit: handleEditRoleSubmit,
|
|
803
815
|
validationSchema: createRoleSchema,
|
|
804
|
-
children: ({ handleSubmit, values, handleChange, errors }) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
816
|
+
children: ({ handleSubmit, values, handleChange, errors }) => /* @__PURE__ */ jsxRuntime.jsxs(formik.Form, { noValidate: true, onSubmit: handleSubmit, children: [
|
|
805
817
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
806
818
|
designSystem.HeaderLayout,
|
|
807
819
|
{
|
|
808
|
-
primaryAction: !isLoadingPlugins
|
|
820
|
+
primaryAction: !isLoadingPlugins ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
809
821
|
designSystem.Button,
|
|
810
822
|
{
|
|
811
823
|
disabled: role.code === "strapi-super-admin",
|
|
812
824
|
type: "submit",
|
|
813
825
|
loading: mutation.isLoading,
|
|
814
|
-
startIcon: /* @__PURE__ */ jsxRuntime.jsx(
|
|
826
|
+
startIcon: /* @__PURE__ */ jsxRuntime.jsx(Icons.Check, {}),
|
|
815
827
|
children: formatMessage({
|
|
816
828
|
id: "global.save",
|
|
817
829
|
defaultMessage: "Save"
|
|
818
830
|
})
|
|
819
831
|
}
|
|
820
|
-
),
|
|
832
|
+
) : null,
|
|
821
833
|
title: role.name,
|
|
822
834
|
subtitle: role.description,
|
|
823
|
-
navigationAction: /* @__PURE__ */ jsxRuntime.jsx(
|
|
824
|
-
id: "global.back",
|
|
825
|
-
defaultMessage: "Back"
|
|
826
|
-
}) })
|
|
835
|
+
navigationAction: /* @__PURE__ */ jsxRuntime.jsx(admin.BackButton, {})
|
|
827
836
|
}
|
|
828
837
|
),
|
|
829
838
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.ContentLayout, { children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
@@ -895,18 +904,18 @@ const EditPage = () => {
|
|
|
895
904
|
)
|
|
896
905
|
] });
|
|
897
906
|
};
|
|
898
|
-
const ProtectedRolesEditPage = () => /* @__PURE__ */ jsxRuntime.jsx(
|
|
907
|
+
const ProtectedRolesEditPage = () => /* @__PURE__ */ jsxRuntime.jsx(admin.Page.Protect, { permissions: index.PERMISSIONS.updateRole, children: /* @__PURE__ */ jsxRuntime.jsx(EditPage, {}) });
|
|
899
908
|
const EditLink = styled__default.default(designSystem.Link)`
|
|
900
909
|
align-items: center;
|
|
901
|
-
height: ${
|
|
910
|
+
height: ${32 / 16}rem;
|
|
902
911
|
display: flex;
|
|
903
912
|
justify-content: center;
|
|
904
913
|
padding: ${({ theme }) => `${theme.spaces[2]}}`};
|
|
905
|
-
width: ${
|
|
914
|
+
width: ${32 / 16}rem;
|
|
906
915
|
|
|
907
916
|
svg {
|
|
908
|
-
height: ${
|
|
909
|
-
width: ${
|
|
917
|
+
height: ${12 / 16}rem;
|
|
918
|
+
width: ${12 / 16}rem;
|
|
910
919
|
|
|
911
920
|
path {
|
|
912
921
|
fill: ${({ theme }) => theme.colors.neutral500};
|
|
@@ -922,19 +931,16 @@ const EditLink = styled__default.default(designSystem.Link)`
|
|
|
922
931
|
}
|
|
923
932
|
}
|
|
924
933
|
`;
|
|
925
|
-
const TableBody = ({ sortedRoles, canDelete,
|
|
934
|
+
const TableBody = ({ sortedRoles, canDelete, canUpdate, setRoleToDelete, onDelete }) => {
|
|
926
935
|
const { formatMessage } = reactIntl.useIntl();
|
|
927
|
-
const
|
|
936
|
+
const navigate = reactRouterDom.useNavigate();
|
|
928
937
|
const [showConfirmDelete, setShowConfirmDelete] = onDelete;
|
|
929
938
|
const checkCanDeleteRole = (role) => canDelete && !["public", "authenticated"].includes(role.type);
|
|
930
939
|
const handleClickDelete = (id) => {
|
|
931
940
|
setRoleToDelete(id);
|
|
932
941
|
setShowConfirmDelete(!showConfirmDelete);
|
|
933
942
|
};
|
|
934
|
-
|
|
935
|
-
push(`/settings/users-permissions/roles/${id}`);
|
|
936
|
-
};
|
|
937
|
-
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tbody, { children: sortedRoles?.map((role) => /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tr, { ...helperPlugin.onRowClick({ fn: () => handleClickEdit(role.id) }), children: [
|
|
943
|
+
return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tbody, { children: sortedRoles?.map((role) => /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tr, { onClick: () => navigate(role.id.toString()), children: [
|
|
938
944
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { width: "20%", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: role.name }) }),
|
|
939
945
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { width: "50%", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: role.description }) }),
|
|
940
946
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { width: "30%", children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: formatMessage(
|
|
@@ -944,82 +950,58 @@ const TableBody = ({ sortedRoles, canDelete, permissions, setRoleToDelete, onDel
|
|
|
944
950
|
},
|
|
945
951
|
{ number: role.nb_users }
|
|
946
952
|
) }) }),
|
|
947
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { justifyContent: "end",
|
|
948
|
-
|
|
953
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { justifyContent: "end", onClick: (e) => e.stopPropagation(), children: [
|
|
954
|
+
canUpdate ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
949
955
|
EditLink,
|
|
950
956
|
{
|
|
951
|
-
to:
|
|
957
|
+
to: role.id.toString(),
|
|
952
958
|
"aria-label": formatMessage(
|
|
953
959
|
{ id: "app.component.table.edit", defaultMessage: "Edit {target}" },
|
|
954
960
|
{ target: `${role.name}` }
|
|
955
961
|
),
|
|
956
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
962
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Icons.Pencil, {})
|
|
957
963
|
}
|
|
958
|
-
)
|
|
959
|
-
checkCanDeleteRole(role) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
964
|
+
) : null,
|
|
965
|
+
checkCanDeleteRole(role) && /* @__PURE__ */ jsxRuntime.jsx(
|
|
960
966
|
designSystem.IconButton,
|
|
961
967
|
{
|
|
962
|
-
onClick: () => handleClickDelete(role.id),
|
|
968
|
+
onClick: () => handleClickDelete(role.id.toString()),
|
|
963
969
|
noBorder: true,
|
|
964
|
-
icon: /* @__PURE__ */ jsxRuntime.jsx(
|
|
970
|
+
icon: /* @__PURE__ */ jsxRuntime.jsx(Icons.Trash, {}),
|
|
965
971
|
label: formatMessage(
|
|
966
972
|
{ id: "global.delete-target", defaultMessage: "Delete {target}" },
|
|
967
973
|
{ target: `${role.name}` }
|
|
968
974
|
)
|
|
969
975
|
}
|
|
970
|
-
)
|
|
976
|
+
)
|
|
971
977
|
] }) })
|
|
972
978
|
] }, role.name)) });
|
|
973
979
|
};
|
|
974
980
|
TableBody.defaultProps = {
|
|
975
|
-
canDelete: false
|
|
981
|
+
canDelete: false,
|
|
982
|
+
canUpdate: false
|
|
976
983
|
};
|
|
977
984
|
TableBody.propTypes = {
|
|
978
985
|
onDelete: PropTypes__default.default.array.isRequired,
|
|
979
986
|
permissions: PropTypes__default.default.object.isRequired,
|
|
980
987
|
setRoleToDelete: PropTypes__default.default.func.isRequired,
|
|
981
988
|
sortedRoles: PropTypes__default.default.array.isRequired,
|
|
982
|
-
canDelete: PropTypes__default.default.bool
|
|
983
|
-
|
|
984
|
-
const fetchData = async (toggleNotification, notifyStatus) => {
|
|
985
|
-
try {
|
|
986
|
-
const { get: get2 } = helperPlugin.getFetchClient();
|
|
987
|
-
const { data } = await get2("/users-permissions/roles");
|
|
988
|
-
notifyStatus("The roles have loaded successfully");
|
|
989
|
-
return data;
|
|
990
|
-
} catch (err) {
|
|
991
|
-
toggleNotification({
|
|
992
|
-
type: "warning",
|
|
993
|
-
message: { id: "notification.error" }
|
|
994
|
-
});
|
|
995
|
-
throw new Error(err);
|
|
996
|
-
}
|
|
997
|
-
};
|
|
998
|
-
const deleteData = async (id, toggleNotification) => {
|
|
999
|
-
try {
|
|
1000
|
-
const { del } = helperPlugin.getFetchClient();
|
|
1001
|
-
await del(`/users-permissions/roles/${id}`);
|
|
1002
|
-
} catch (error) {
|
|
1003
|
-
toggleNotification({
|
|
1004
|
-
type: "warning",
|
|
1005
|
-
message: { id: "notification.error", defaultMessage: "An error occured" }
|
|
1006
|
-
});
|
|
1007
|
-
}
|
|
989
|
+
canDelete: PropTypes__default.default.bool,
|
|
990
|
+
canUpdate: PropTypes__default.default.bool
|
|
1008
991
|
};
|
|
1009
992
|
const RolesListPage = () => {
|
|
1010
|
-
const { trackUsage } =
|
|
993
|
+
const { trackUsage } = admin.useTracking();
|
|
1011
994
|
const { formatMessage, locale } = reactIntl.useIntl();
|
|
1012
|
-
const toggleNotification =
|
|
995
|
+
const { toggleNotification } = admin.useNotification();
|
|
1013
996
|
const { notifyStatus } = designSystem.useNotifyAT();
|
|
1014
|
-
const [{ query }] =
|
|
997
|
+
const [{ query }] = admin.useQueryParams();
|
|
1015
998
|
const _q = query?._q || "";
|
|
1016
999
|
const [showConfirmDelete, setShowConfirmDelete] = React.useState(false);
|
|
1017
|
-
const [isConfirmButtonLoading, setIsConfirmButtonLoading] = React.useState(false);
|
|
1018
1000
|
const [roleToDelete, setRoleToDelete] = React.useState();
|
|
1019
|
-
|
|
1001
|
+
const { del, get: get2 } = admin.useFetchClient();
|
|
1020
1002
|
const {
|
|
1021
1003
|
isLoading: isLoadingForPermissions,
|
|
1022
|
-
allowedActions: { canRead, canDelete }
|
|
1004
|
+
allowedActions: { canRead, canDelete, canCreate, canUpdate }
|
|
1023
1005
|
} = helperPlugin.useRBAC({
|
|
1024
1006
|
create: index.PERMISSIONS.createRole,
|
|
1025
1007
|
read: index.PERMISSIONS.readRoles,
|
|
@@ -1031,20 +1013,43 @@ const RolesListPage = () => {
|
|
|
1031
1013
|
data: { roles },
|
|
1032
1014
|
isFetching,
|
|
1033
1015
|
refetch
|
|
1034
|
-
} = reactQuery.useQuery("get-roles", () => fetchData(toggleNotification, notifyStatus), {
|
|
1016
|
+
} = reactQuery.useQuery("get-roles", () => fetchData(toggleNotification, formatMessage, notifyStatus), {
|
|
1035
1017
|
initialData: {},
|
|
1036
1018
|
enabled: canRead
|
|
1037
1019
|
});
|
|
1038
|
-
const {
|
|
1020
|
+
const { contains } = designSystem.useFilter(locale, {
|
|
1039
1021
|
sensitivity: "base"
|
|
1040
1022
|
});
|
|
1041
|
-
const formatter =
|
|
1023
|
+
const formatter = designSystem.useCollator(locale, {
|
|
1042
1024
|
sensitivity: "base"
|
|
1043
1025
|
});
|
|
1044
|
-
const isLoading = isLoadingForData || isFetching;
|
|
1026
|
+
const isLoading = isLoadingForData || isFetching || isLoadingForPermissions;
|
|
1045
1027
|
const handleShowConfirmDelete = () => {
|
|
1046
1028
|
setShowConfirmDelete(!showConfirmDelete);
|
|
1047
1029
|
};
|
|
1030
|
+
const deleteData = async (id, formatMessage2, toggleNotification2) => {
|
|
1031
|
+
try {
|
|
1032
|
+
await del(`/users-permissions/roles/${id}`);
|
|
1033
|
+
} catch (error) {
|
|
1034
|
+
toggleNotification2({
|
|
1035
|
+
type: "danger",
|
|
1036
|
+
message: formatMessage2({ id: "notification.error", defaultMessage: "An error occured" })
|
|
1037
|
+
});
|
|
1038
|
+
}
|
|
1039
|
+
};
|
|
1040
|
+
const fetchData = async (toggleNotification2, formatMessage2, notifyStatus2) => {
|
|
1041
|
+
try {
|
|
1042
|
+
const { data } = await get2("/users-permissions/roles");
|
|
1043
|
+
notifyStatus2("The roles have loaded successfully");
|
|
1044
|
+
return data;
|
|
1045
|
+
} catch (err) {
|
|
1046
|
+
toggleNotification2({
|
|
1047
|
+
type: "danger",
|
|
1048
|
+
message: formatMessage2({ id: "notification.error" })
|
|
1049
|
+
});
|
|
1050
|
+
throw new Error(err);
|
|
1051
|
+
}
|
|
1052
|
+
};
|
|
1048
1053
|
const emptyLayout = {
|
|
1049
1054
|
roles: {
|
|
1050
1055
|
id: index.getTrad("Roles.empty"),
|
|
@@ -1059,26 +1064,35 @@ const RolesListPage = () => {
|
|
|
1059
1064
|
id: "global.roles",
|
|
1060
1065
|
defaultMessage: "Roles"
|
|
1061
1066
|
});
|
|
1062
|
-
const deleteMutation = reactQuery.useMutation((id) => deleteData(id, toggleNotification), {
|
|
1067
|
+
const deleteMutation = reactQuery.useMutation((id) => deleteData(id, formatMessage, toggleNotification), {
|
|
1063
1068
|
async onSuccess() {
|
|
1064
1069
|
await refetch();
|
|
1065
1070
|
}
|
|
1066
1071
|
});
|
|
1067
1072
|
const handleConfirmDelete = async () => {
|
|
1068
|
-
setIsConfirmButtonLoading(true);
|
|
1069
1073
|
await deleteMutation.mutateAsync(roleToDelete);
|
|
1070
1074
|
setShowConfirmDelete(!showConfirmDelete);
|
|
1071
|
-
setIsConfirmButtonLoading(false);
|
|
1072
1075
|
};
|
|
1073
|
-
const sortedRoles = (roles || []).filter((role) =>
|
|
1076
|
+
const sortedRoles = (roles || []).filter((role) => contains(role.name, _q) || contains(role.description, _q)).sort(
|
|
1074
1077
|
(a, b) => formatter.compare(a.name, b.name) || formatter.compare(a.description, b.description)
|
|
1075
1078
|
);
|
|
1076
1079
|
const emptyContent = _q && !sortedRoles.length ? "search" : "roles";
|
|
1077
1080
|
const colCount = 4;
|
|
1078
1081
|
const rowCount = (roles?.length || 0) + 1;
|
|
1082
|
+
if (isLoading) {
|
|
1083
|
+
return /* @__PURE__ */ jsxRuntime.jsx(admin.Page.Loading, {});
|
|
1084
|
+
}
|
|
1079
1085
|
return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Layout, { children: [
|
|
1080
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1081
|
-
|
|
1086
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1087
|
+
Helmet.HelmetExport,
|
|
1088
|
+
{
|
|
1089
|
+
title: formatMessage(
|
|
1090
|
+
{ id: "Settings.PageTitle", defaultMessage: "Settings - {name}" },
|
|
1091
|
+
{ name: pageTitle }
|
|
1092
|
+
)
|
|
1093
|
+
}
|
|
1094
|
+
),
|
|
1095
|
+
/* @__PURE__ */ jsxRuntime.jsxs(admin.Page.Main, { children: [
|
|
1082
1096
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1083
1097
|
designSystem.HeaderLayout,
|
|
1084
1098
|
{
|
|
@@ -1090,26 +1104,28 @@ const RolesListPage = () => {
|
|
|
1090
1104
|
id: "Settings.roles.list.description",
|
|
1091
1105
|
defaultMessage: "List of roles"
|
|
1092
1106
|
}),
|
|
1093
|
-
primaryAction:
|
|
1094
|
-
|
|
1107
|
+
primaryAction: canCreate ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
1108
|
+
v2.LinkButton,
|
|
1095
1109
|
{
|
|
1096
|
-
to: "
|
|
1110
|
+
to: "new",
|
|
1111
|
+
as: reactRouterDom.NavLink,
|
|
1097
1112
|
onClick: () => trackUsage("willCreateRole"),
|
|
1098
|
-
startIcon: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1113
|
+
startIcon: /* @__PURE__ */ jsxRuntime.jsx(Icons.Plus, {}),
|
|
1099
1114
|
size: "S",
|
|
1100
1115
|
children: formatMessage({
|
|
1101
1116
|
id: index.getTrad("List.button.roles"),
|
|
1102
1117
|
defaultMessage: "Add new role"
|
|
1103
1118
|
})
|
|
1104
1119
|
}
|
|
1105
|
-
)
|
|
1120
|
+
) : null,
|
|
1121
|
+
navigationAction: /* @__PURE__ */ jsxRuntime.jsx(admin.BackButton, {})
|
|
1106
1122
|
}
|
|
1107
1123
|
),
|
|
1108
1124
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1109
1125
|
designSystem.ActionLayout,
|
|
1110
1126
|
{
|
|
1111
1127
|
startActions: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1112
|
-
|
|
1128
|
+
admin.SearchInput,
|
|
1113
1129
|
{
|
|
1114
1130
|
label: formatMessage({
|
|
1115
1131
|
id: "app.component.search.label",
|
|
@@ -1120,8 +1136,7 @@ const RolesListPage = () => {
|
|
|
1120
1136
|
}
|
|
1121
1137
|
),
|
|
1122
1138
|
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.ContentLayout, { children: [
|
|
1123
|
-
!canRead && /* @__PURE__ */ jsxRuntime.jsx(
|
|
1124
|
-
(isLoading || isLoadingForPermissions) && /* @__PURE__ */ jsxRuntime.jsx(helperPlugin.LoadingIndicatorPage, {}),
|
|
1139
|
+
!canRead && /* @__PURE__ */ jsxRuntime.jsx(admin.Page.NoPermissions, {}),
|
|
1125
1140
|
canRead && sortedRoles && sortedRoles?.length ? /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Table, { colCount, rowCount, children: [
|
|
1126
1141
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Thead, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tr, { children: [
|
|
1127
1142
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Th, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", textColor: "neutral600", children: formatMessage({ id: "global.name", defaultMessage: "Name" }) }) }),
|
|
@@ -1143,19 +1158,19 @@ const RolesListPage = () => {
|
|
|
1143
1158
|
{
|
|
1144
1159
|
sortedRoles,
|
|
1145
1160
|
canDelete,
|
|
1161
|
+
canUpdate,
|
|
1146
1162
|
permissions: index.PERMISSIONS,
|
|
1147
1163
|
setRoleToDelete,
|
|
1148
1164
|
onDelete: [showConfirmDelete, setShowConfirmDelete]
|
|
1149
1165
|
}
|
|
1150
1166
|
)
|
|
1151
|
-
] }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
1167
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsx(designSystem.EmptyStateLayout, { content: formatMessage(emptyLayout[emptyContent]) })
|
|
1152
1168
|
] }),
|
|
1153
1169
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1154
|
-
|
|
1170
|
+
admin.ConfirmDialog,
|
|
1155
1171
|
{
|
|
1156
|
-
isConfirmButtonLoading,
|
|
1157
1172
|
onConfirm: handleConfirmDelete,
|
|
1158
|
-
|
|
1173
|
+
onClose: handleShowConfirmDelete,
|
|
1159
1174
|
isOpen: showConfirmDelete
|
|
1160
1175
|
}
|
|
1161
1176
|
)
|
|
@@ -1163,29 +1178,14 @@ const RolesListPage = () => {
|
|
|
1163
1178
|
] });
|
|
1164
1179
|
};
|
|
1165
1180
|
const ProtectedRolesListPage = () => {
|
|
1166
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1181
|
+
return /* @__PURE__ */ jsxRuntime.jsx(admin.Page.Protect, { permissions: index.PERMISSIONS.accessRoles, children: /* @__PURE__ */ jsxRuntime.jsx(RolesListPage, {}) });
|
|
1167
1182
|
};
|
|
1168
1183
|
const Roles = () => {
|
|
1169
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
1170
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
path: "/settings/users-permissions/roles/new",
|
|
1174
|
-
component: ProtectedRolesCreatePage,
|
|
1175
|
-
exact: true
|
|
1176
|
-
}
|
|
1177
|
-
),
|
|
1178
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
1179
|
-
reactRouterDom.Route,
|
|
1180
|
-
{
|
|
1181
|
-
path: "/settings/users-permissions/roles/:id",
|
|
1182
|
-
component: ProtectedRolesEditPage,
|
|
1183
|
-
exact: true
|
|
1184
|
-
}
|
|
1185
|
-
),
|
|
1186
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, { path: "/settings/users-permissions/roles", component: ProtectedRolesListPage, exact: true }),
|
|
1187
|
-
/* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, { path: "", component: helperPlugin.AnErrorOccurred })
|
|
1184
|
+
return /* @__PURE__ */ jsxRuntime.jsx(admin.Page.Protect, { permissions: index.PERMISSIONS.accessRoles, children: /* @__PURE__ */ jsxRuntime.jsxs(reactRouterDom.Routes, { children: [
|
|
1185
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, { index: true, element: /* @__PURE__ */ jsxRuntime.jsx(ProtectedRolesListPage, {}) }),
|
|
1186
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, { path: "new", element: /* @__PURE__ */ jsxRuntime.jsx(ProtectedRolesCreatePage, {}) }),
|
|
1187
|
+
/* @__PURE__ */ jsxRuntime.jsx(reactRouterDom.Route, { path: ":id", element: /* @__PURE__ */ jsxRuntime.jsx(ProtectedRolesEditPage, {}) })
|
|
1188
1188
|
] }) });
|
|
1189
1189
|
};
|
|
1190
1190
|
exports.default = Roles;
|
|
1191
|
-
//# sourceMappingURL=index-
|
|
1191
|
+
//# sourceMappingURL=index-6E51D69B.js.map
|