@strapi/plugin-users-permissions 0.0.0-next.f5107c72369ee86a8ec1b6782f2e890925033ca3 → 0.0.0-next.f5312617ca16b870c2bf1adcea2c69b676979e29

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.
Files changed (218) hide show
  1. package/.eslintignore +1 -2
  2. package/.eslintrc +17 -0
  3. package/LICENSE +18 -3
  4. package/admin/src/components/BoundRoute/{index.js → index.jsx} +2 -2
  5. package/admin/src/components/FormModal/Input/{index.js → index.jsx} +32 -31
  6. package/admin/src/components/FormModal/index.jsx +115 -0
  7. package/admin/src/components/Permissions/PermissionRow/{CheckboxWrapper.js → CheckboxWrapper.jsx} +4 -3
  8. package/admin/src/components/Permissions/PermissionRow/{SubCategory.js → SubCategory.jsx} +13 -22
  9. package/admin/src/components/Permissions/index.jsx +47 -0
  10. package/admin/src/components/Permissions/reducer.js +1 -1
  11. package/admin/src/components/Policies/{index.js → index.jsx} +7 -5
  12. package/admin/src/components/UsersPermissions/{index.js → index.jsx} +15 -7
  13. package/admin/src/components/UsersPermissions/reducer.js +1 -1
  14. package/admin/src/index.js +19 -47
  15. package/admin/src/pages/AdvancedSettings/index.jsx +214 -0
  16. package/admin/src/pages/AdvancedSettings/utils/layout.js +20 -35
  17. package/admin/src/pages/AdvancedSettings/utils/schema.js +5 -2
  18. package/admin/src/pages/EmailTemplates/components/EmailForm.jsx +156 -0
  19. package/admin/src/pages/EmailTemplates/components/{EmailTable.js → EmailTable.jsx} +20 -17
  20. package/admin/src/pages/EmailTemplates/index.jsx +148 -0
  21. package/admin/src/pages/EmailTemplates/utils/schema.js +18 -6
  22. package/admin/src/pages/Providers/index.jsx +262 -0
  23. package/admin/src/pages/Providers/utils/forms.js +23 -11
  24. package/admin/src/pages/Roles/constants.js +3 -3
  25. package/admin/src/{hooks → pages/Roles/hooks}/usePlugins.js +19 -12
  26. package/admin/src/pages/Roles/index.jsx +24 -0
  27. package/admin/src/pages/Roles/pages/CreatePage.jsx +194 -0
  28. package/admin/src/pages/Roles/pages/EditPage.jsx +215 -0
  29. package/admin/src/pages/Roles/pages/ListPage/components/TableBody.jsx +119 -0
  30. package/admin/src/pages/Roles/{ListPage/index.js → pages/ListPage/index.jsx} +93 -65
  31. package/admin/src/translations/en.json +1 -1
  32. package/admin/src/translations/zh-Hans.json +80 -80
  33. package/admin/src/utils/prefixPluginTranslations.js +13 -0
  34. package/dist/_chunks/ar-BguGUqwK.js +44 -0
  35. package/dist/_chunks/ar-BguGUqwK.js.map +1 -0
  36. package/dist/_chunks/ar-CK8BRRXB.mjs +44 -0
  37. package/dist/_chunks/ar-CK8BRRXB.mjs.map +1 -0
  38. package/dist/_chunks/cs-BVigMk0l.mjs +50 -0
  39. package/dist/_chunks/cs-BVigMk0l.mjs.map +1 -0
  40. package/dist/_chunks/cs-BW8-K_GY.js +50 -0
  41. package/dist/_chunks/cs-BW8-K_GY.js.map +1 -0
  42. package/dist/_chunks/de-BKUdRFI4.mjs +62 -0
  43. package/dist/_chunks/de-BKUdRFI4.mjs.map +1 -0
  44. package/dist/_chunks/de-owXpVluI.js +62 -0
  45. package/dist/_chunks/de-owXpVluI.js.map +1 -0
  46. package/dist/_chunks/dk-BQiTK50l.mjs +86 -0
  47. package/dist/_chunks/dk-BQiTK50l.mjs.map +1 -0
  48. package/dist/_chunks/dk-LXAnbuBk.js +86 -0
  49. package/dist/_chunks/dk-LXAnbuBk.js.map +1 -0
  50. package/dist/_chunks/en-DOHtPf-2.mjs +86 -0
  51. package/dist/_chunks/en-DOHtPf-2.mjs.map +1 -0
  52. package/dist/_chunks/en-MHo5mcsU.js +86 -0
  53. package/dist/_chunks/en-MHo5mcsU.js.map +1 -0
  54. package/dist/_chunks/es-BwLCLXAQ.js +86 -0
  55. package/dist/_chunks/es-BwLCLXAQ.js.map +1 -0
  56. package/dist/_chunks/es-DNgOVMjD.mjs +86 -0
  57. package/dist/_chunks/es-DNgOVMjD.mjs.map +1 -0
  58. package/dist/_chunks/fr-DkgRugiU.mjs +50 -0
  59. package/dist/_chunks/fr-DkgRugiU.mjs.map +1 -0
  60. package/dist/_chunks/fr-DkhpSjjm.js +50 -0
  61. package/dist/_chunks/fr-DkhpSjjm.js.map +1 -0
  62. package/dist/_chunks/id-BTemOeTZ.js +62 -0
  63. package/dist/_chunks/id-BTemOeTZ.js.map +1 -0
  64. package/dist/_chunks/id-BdEsvnaF.mjs +62 -0
  65. package/dist/_chunks/id-BdEsvnaF.mjs.map +1 -0
  66. package/dist/_chunks/index-BH6NqE8I.js +245 -0
  67. package/dist/_chunks/index-BH6NqE8I.js.map +1 -0
  68. package/dist/_chunks/index-C3i__jX-.js +281 -0
  69. package/dist/_chunks/index-C3i__jX-.js.map +1 -0
  70. package/dist/_chunks/index-CFzpNgIL.js +640 -0
  71. package/dist/_chunks/index-CFzpNgIL.js.map +1 -0
  72. package/dist/_chunks/index-CJUWqtrZ.mjs +344 -0
  73. package/dist/_chunks/index-CJUWqtrZ.mjs.map +1 -0
  74. package/dist/_chunks/index-CcWTKtCY.js +366 -0
  75. package/dist/_chunks/index-CcWTKtCY.js.map +1 -0
  76. package/dist/_chunks/index-CnX2wiLY.mjs +1142 -0
  77. package/dist/_chunks/index-CnX2wiLY.mjs.map +1 -0
  78. package/dist/_chunks/index-DUWx-KG9-C1E7ADbJ.mjs +11984 -0
  79. package/dist/_chunks/index-DUWx-KG9-C1E7ADbJ.mjs.map +1 -0
  80. package/dist/_chunks/index-DUWx-KG9-fMZ4nmrb.js +12008 -0
  81. package/dist/_chunks/index-DUWx-KG9-fMZ4nmrb.js.map +1 -0
  82. package/dist/_chunks/index-DruWuFWL.js +1172 -0
  83. package/dist/_chunks/index-DruWuFWL.js.map +1 -0
  84. package/dist/_chunks/index-PJoz36kJ.mjs +262 -0
  85. package/dist/_chunks/index-PJoz36kJ.mjs.map +1 -0
  86. package/dist/_chunks/index-R4R0dEOv.mjs +246 -0
  87. package/dist/_chunks/index-R4R0dEOv.mjs.map +1 -0
  88. package/dist/_chunks/index-XOcQhJMB.mjs +617 -0
  89. package/dist/_chunks/index-XOcQhJMB.mjs.map +1 -0
  90. package/dist/_chunks/it-B-rv0E24.mjs +62 -0
  91. package/dist/_chunks/it-B-rv0E24.mjs.map +1 -0
  92. package/dist/_chunks/it-D1rH6V6_.js +62 -0
  93. package/dist/_chunks/it-D1rH6V6_.js.map +1 -0
  94. package/dist/_chunks/ja-C8K-VBPD.mjs +48 -0
  95. package/dist/_chunks/ja-C8K-VBPD.mjs.map +1 -0
  96. package/dist/_chunks/ja-DqShgTMf.js +48 -0
  97. package/dist/_chunks/ja-DqShgTMf.js.map +1 -0
  98. package/dist/_chunks/ko-B9DGEPWH.js +86 -0
  99. package/dist/_chunks/ko-B9DGEPWH.js.map +1 -0
  100. package/dist/_chunks/ko-Busb0wIY.mjs +86 -0
  101. package/dist/_chunks/ko-Busb0wIY.mjs.map +1 -0
  102. package/dist/_chunks/ms-ByvsQjRt.mjs +49 -0
  103. package/dist/_chunks/ms-ByvsQjRt.mjs.map +1 -0
  104. package/dist/_chunks/ms-CPBU3LWf.js +49 -0
  105. package/dist/_chunks/ms-CPBU3LWf.js.map +1 -0
  106. package/dist/_chunks/nl-5qO8Rpcy.mjs +48 -0
  107. package/dist/_chunks/nl-5qO8Rpcy.mjs.map +1 -0
  108. package/dist/_chunks/nl-CwNB6YoO.js +48 -0
  109. package/dist/_chunks/nl-CwNB6YoO.js.map +1 -0
  110. package/dist/_chunks/pl-BdIzifBE.mjs +86 -0
  111. package/dist/_chunks/pl-BdIzifBE.mjs.map +1 -0
  112. package/dist/_chunks/pl-Do9UD69f.js +86 -0
  113. package/dist/_chunks/pl-Do9UD69f.js.map +1 -0
  114. package/dist/_chunks/pt-BIO24ioG.mjs +48 -0
  115. package/dist/_chunks/pt-BIO24ioG.mjs.map +1 -0
  116. package/dist/_chunks/pt-BR-D7dZhxuP.js +44 -0
  117. package/dist/_chunks/pt-BR-D7dZhxuP.js.map +1 -0
  118. package/dist/_chunks/pt-BR-f0p23AQZ.mjs +44 -0
  119. package/dist/_chunks/pt-BR-f0p23AQZ.mjs.map +1 -0
  120. package/dist/_chunks/pt-fdvyOnUp.js +48 -0
  121. package/dist/_chunks/pt-fdvyOnUp.js.map +1 -0
  122. package/dist/_chunks/ru-C94rjPGA.js +86 -0
  123. package/dist/_chunks/ru-C94rjPGA.js.map +1 -0
  124. package/dist/_chunks/ru-VWy-IB7K.mjs +86 -0
  125. package/dist/_chunks/ru-VWy-IB7K.mjs.map +1 -0
  126. package/dist/_chunks/sk-BABEhykl.js +50 -0
  127. package/dist/_chunks/sk-BABEhykl.js.map +1 -0
  128. package/dist/_chunks/sk-B_LIcepm.mjs +50 -0
  129. package/dist/_chunks/sk-B_LIcepm.mjs.map +1 -0
  130. package/dist/_chunks/sv-ABLKOokl.mjs +86 -0
  131. package/dist/_chunks/sv-ABLKOokl.mjs.map +1 -0
  132. package/dist/_chunks/sv-Be43LhA9.js +86 -0
  133. package/dist/_chunks/sv-Be43LhA9.js.map +1 -0
  134. package/dist/_chunks/th-DKyP7ueR.mjs +60 -0
  135. package/dist/_chunks/th-DKyP7ueR.mjs.map +1 -0
  136. package/dist/_chunks/th-DgVhVLhL.js +60 -0
  137. package/dist/_chunks/th-DgVhVLhL.js.map +1 -0
  138. package/dist/_chunks/tr-B_idhkEs.js +85 -0
  139. package/dist/_chunks/tr-B_idhkEs.js.map +1 -0
  140. package/dist/_chunks/tr-qa1Q5UjC.mjs +85 -0
  141. package/dist/_chunks/tr-qa1Q5UjC.mjs.map +1 -0
  142. package/dist/_chunks/uk-BmRqbeQc.mjs +49 -0
  143. package/dist/_chunks/uk-BmRqbeQc.mjs.map +1 -0
  144. package/dist/_chunks/uk-LHOivnhP.js +49 -0
  145. package/dist/_chunks/uk-LHOivnhP.js.map +1 -0
  146. package/dist/_chunks/vi-CdVRdKDw.js +50 -0
  147. package/dist/_chunks/vi-CdVRdKDw.js.map +1 -0
  148. package/dist/_chunks/vi-HW-EdMea.mjs +50 -0
  149. package/dist/_chunks/vi-HW-EdMea.mjs.map +1 -0
  150. package/dist/_chunks/zh-5hKkVPA4.mjs +86 -0
  151. package/dist/_chunks/zh-5hKkVPA4.mjs.map +1 -0
  152. package/dist/_chunks/zh-Cuq8gMnF.js +86 -0
  153. package/dist/_chunks/zh-Cuq8gMnF.js.map +1 -0
  154. package/dist/_chunks/zh-Hans-BHilK-yc.mjs +86 -0
  155. package/dist/_chunks/zh-Hans-BHilK-yc.mjs.map +1 -0
  156. package/dist/_chunks/zh-Hans-GQDMKtY4.js +86 -0
  157. package/dist/_chunks/zh-Hans-GQDMKtY4.js.map +1 -0
  158. package/dist/admin/index.js +4 -0
  159. package/dist/admin/index.js.map +1 -0
  160. package/dist/admin/index.mjs +5 -0
  161. package/dist/admin/index.mjs.map +1 -0
  162. package/jest.config.front.js +1 -1
  163. package/package.json +46 -27
  164. package/packup.config.ts +22 -0
  165. package/server/bootstrap/index.js +18 -15
  166. package/server/bootstrap/users-permissions-actions.js +6 -0
  167. package/server/config.js +29 -0
  168. package/server/content-types/user/index.js +0 -1
  169. package/server/controllers/auth.js +74 -38
  170. package/server/controllers/content-manager-user.js +28 -30
  171. package/server/controllers/role.js +17 -4
  172. package/server/controllers/user.js +18 -8
  173. package/server/controllers/validation/auth.js +81 -25
  174. package/server/middlewares/rateLimit.js +1 -1
  175. package/server/register.js +1 -1
  176. package/server/services/jwt.js +3 -3
  177. package/server/services/permission.js +3 -7
  178. package/server/services/providers-registry.js +469 -261
  179. package/server/services/providers.js +10 -5
  180. package/server/services/role.js +15 -13
  181. package/server/services/user.js +56 -19
  182. package/server/services/users-permissions.js +15 -13
  183. package/server/utils/index.d.ts +2 -1
  184. package/server/utils/sanitize/sanitizers.js +7 -3
  185. package/server/utils/sanitize/visitors/remove-user-relation-from-role-entities.js +2 -2
  186. package/.eslintrc.js +0 -14
  187. package/admin/src/components/FormModal/index.js +0 -126
  188. package/admin/src/components/Permissions/index.js +0 -57
  189. package/admin/src/hooks/index.js +0 -5
  190. package/admin/src/hooks/useFetchRole/index.js +0 -67
  191. package/admin/src/hooks/useFetchRole/reducer.js +0 -31
  192. package/admin/src/hooks/useForm/index.js +0 -68
  193. package/admin/src/hooks/useForm/reducer.js +0 -40
  194. package/admin/src/hooks/useRolesList/index.js +0 -65
  195. package/admin/src/hooks/useRolesList/init.js +0 -5
  196. package/admin/src/hooks/useRolesList/reducer.js +0 -31
  197. package/admin/src/pages/AdvancedSettings/index.js +0 -242
  198. package/admin/src/pages/AdvancedSettings/utils/api.js +0 -16
  199. package/admin/src/pages/EmailTemplates/components/EmailForm.js +0 -176
  200. package/admin/src/pages/EmailTemplates/index.js +0 -159
  201. package/admin/src/pages/EmailTemplates/utils/api.js +0 -16
  202. package/admin/src/pages/Providers/index.js +0 -271
  203. package/admin/src/pages/Providers/reducer.js +0 -54
  204. package/admin/src/pages/Providers/utils/api.js +0 -24
  205. package/admin/src/pages/Providers/utils/createProvidersArray.js +0 -21
  206. package/admin/src/pages/Roles/CreatePage.js +0 -185
  207. package/admin/src/pages/Roles/EditPage.js +0 -197
  208. package/admin/src/pages/Roles/ListPage/components/TableBody.js +0 -93
  209. package/admin/src/pages/Roles/ListPage/utils/api.js +0 -30
  210. package/admin/src/pages/Roles/ProtectedCreatePage.js +0 -15
  211. package/admin/src/pages/Roles/ProtectedEditPage.js +0 -15
  212. package/admin/src/pages/Roles/ProtectedListPage.js +0 -17
  213. package/admin/src/pages/Roles/index.js +0 -30
  214. package/server/bootstrap/grant-config.js +0 -131
  215. package/strapi-admin.js +0 -3
  216. package/strapi-server.js +0 -3
  217. /package/admin/src/components/Permissions/PermissionRow/{index.js → index.jsx} +0 -0
  218. /package/admin/src/contexts/UsersPermissionsContext/{index.js → index.jsx} +0 -0
@@ -1,12 +1,6 @@
1
1
  import React, { useState } from 'react';
2
2
 
3
3
  import {
4
- ActionLayout,
5
- Button,
6
- ContentLayout,
7
- HeaderLayout,
8
- Layout,
9
- Main,
10
4
  Table,
11
5
  Th,
12
6
  Thead,
@@ -14,51 +8,47 @@ import {
14
8
  Typography,
15
9
  useNotifyAT,
16
10
  VisuallyHidden,
17
- } from '@strapi/design-system';
18
- import {
19
- CheckPermissions,
20
- ConfirmDialog,
21
11
  EmptyStateLayout,
22
- LoadingIndicatorPage,
23
- NoPermissions,
24
- SearchURLQuery,
25
- SettingsPageTitle,
26
12
  useCollator,
27
13
  useFilter,
28
- useFocusWhenNavigate,
14
+ LinkButton,
15
+ Dialog,
16
+ } from '@strapi/design-system';
17
+ import { Plus } from '@strapi/icons';
18
+ import {
19
+ ConfirmDialog,
20
+ useTracking,
21
+ Page,
22
+ SearchInput,
29
23
  useNotification,
30
24
  useQueryParams,
25
+ useFetchClient,
31
26
  useRBAC,
32
- useTracking,
33
- } from '@strapi/helper-plugin';
34
- import { Plus } from '@strapi/icons';
27
+ Layouts,
28
+ } from '@strapi/strapi/admin';
35
29
  import { useIntl } from 'react-intl';
36
30
  import { useMutation, useQuery } from 'react-query';
37
- import { useHistory } from 'react-router-dom';
31
+ import { NavLink } from 'react-router-dom';
38
32
 
39
- import { PERMISSIONS } from '../../../constants';
40
- import pluginId from '../../../pluginId';
41
- import { getTrad } from '../../../utils';
33
+ import { PERMISSIONS } from '../../../../constants';
34
+ import { getTrad } from '../../../../utils';
42
35
 
43
36
  import TableBody from './components/TableBody';
44
- import { deleteData, fetchData } from './utils/api';
45
37
 
46
- const RoleListPage = () => {
38
+ export const RolesListPage = () => {
47
39
  const { trackUsage } = useTracking();
48
40
  const { formatMessage, locale } = useIntl();
49
- const { push } = useHistory();
50
- const toggleNotification = useNotification();
41
+ const { toggleNotification } = useNotification();
51
42
  const { notifyStatus } = useNotifyAT();
52
43
  const [{ query }] = useQueryParams();
53
44
  const _q = query?._q || '';
54
45
  const [showConfirmDelete, setShowConfirmDelete] = useState(false);
55
- const [isConfirmButtonLoading, setIsConfirmButtonLoading] = useState(false);
56
46
  const [roleToDelete, setRoleToDelete] = useState();
57
- useFocusWhenNavigate();
47
+ const { del, get } = useFetchClient();
58
48
 
59
49
  const {
60
50
  isLoading: isLoadingForPermissions,
61
- allowedActions: { canRead, canDelete },
51
+ allowedActions: { canRead, canDelete, canCreate, canUpdate },
62
52
  } = useRBAC({
63
53
  create: PERMISSIONS.createRole,
64
54
  read: PERMISSIONS.readRoles,
@@ -71,12 +61,12 @@ const RoleListPage = () => {
71
61
  data: { roles },
72
62
  isFetching,
73
63
  refetch,
74
- } = useQuery('get-roles', () => fetchData(toggleNotification, notifyStatus), {
64
+ } = useQuery('get-roles', () => fetchData(toggleNotification, formatMessage, notifyStatus), {
75
65
  initialData: {},
76
66
  enabled: canRead,
77
67
  });
78
68
 
79
- const { includes } = useFilter(locale, {
69
+ const { contains } = useFilter(locale, {
80
70
  sensitivity: 'base',
81
71
  });
82
72
 
@@ -87,17 +77,39 @@ const RoleListPage = () => {
87
77
  sensitivity: 'base',
88
78
  });
89
79
 
90
- const isLoading = isLoadingForData || isFetching;
91
-
92
- const handleNewRoleClick = () => {
93
- trackUsage('willCreateRole');
94
- push(`/settings/${pluginId}/roles/new`);
95
- };
80
+ const isLoading = isLoadingForData || isFetching || isLoadingForPermissions;
96
81
 
97
82
  const handleShowConfirmDelete = () => {
98
83
  setShowConfirmDelete(!showConfirmDelete);
99
84
  };
100
85
 
86
+ const deleteData = async (id, formatMessage, toggleNotification) => {
87
+ try {
88
+ await del(`/users-permissions/roles/${id}`);
89
+ } catch (error) {
90
+ toggleNotification({
91
+ type: 'danger',
92
+ message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),
93
+ });
94
+ }
95
+ };
96
+
97
+ const fetchData = async (toggleNotification, formatMessage, notifyStatus) => {
98
+ try {
99
+ const { data } = await get('/users-permissions/roles');
100
+ notifyStatus('The roles have loaded successfully');
101
+
102
+ return data;
103
+ } catch (err) {
104
+ toggleNotification({
105
+ type: 'danger',
106
+ message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),
107
+ });
108
+
109
+ throw new Error(err);
110
+ }
111
+ };
112
+
101
113
  const emptyLayout = {
102
114
  roles: {
103
115
  id: getTrad('Roles.empty'),
@@ -114,21 +126,19 @@ const RoleListPage = () => {
114
126
  defaultMessage: 'Roles',
115
127
  });
116
128
 
117
- const deleteMutation = useMutation((id) => deleteData(id, toggleNotification), {
129
+ const deleteMutation = useMutation((id) => deleteData(id, formatMessage, toggleNotification), {
118
130
  async onSuccess() {
119
131
  await refetch();
120
132
  },
121
133
  });
122
134
 
123
135
  const handleConfirmDelete = async () => {
124
- setIsConfirmButtonLoading(true);
125
136
  await deleteMutation.mutateAsync(roleToDelete);
126
137
  setShowConfirmDelete(!showConfirmDelete);
127
- setIsConfirmButtonLoading(false);
128
138
  };
129
139
 
130
140
  const sortedRoles = (roles || [])
131
- .filter((role) => includes(role.name, _q) || includes(role.description, _q))
141
+ .filter((role) => contains(role.name, _q) || contains(role.description, _q))
132
142
  .sort(
133
143
  (a, b) => formatter.compare(a.name, b.name) || formatter.compare(a.description, b.description)
134
144
  );
@@ -138,11 +148,20 @@ const RoleListPage = () => {
138
148
  const colCount = 4;
139
149
  const rowCount = (roles?.length || 0) + 1;
140
150
 
151
+ if (isLoading) {
152
+ return <Page.Loading />;
153
+ }
154
+
141
155
  return (
142
- <Layout>
143
- <SettingsPageTitle name={pageTitle} />
144
- <Main aria-busy={isLoading}>
145
- <HeaderLayout
156
+ <Layouts.Root>
157
+ <Page.Title>
158
+ {formatMessage(
159
+ { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },
160
+ { name: pageTitle }
161
+ )}
162
+ </Page.Title>
163
+ <Page.Main>
164
+ <Layouts.Header
146
165
  title={formatMessage({
147
166
  id: 'global.roles',
148
167
  defaultMessage: 'Roles',
@@ -152,20 +171,26 @@ const RoleListPage = () => {
152
171
  defaultMessage: 'List of roles',
153
172
  })}
154
173
  primaryAction={
155
- <CheckPermissions permissions={PERMISSIONS.createRole}>
156
- <Button onClick={handleNewRoleClick} startIcon={<Plus />} size="S">
174
+ canCreate ? (
175
+ <LinkButton
176
+ to="new"
177
+ tag={NavLink}
178
+ onClick={() => trackUsage('willCreateRole')}
179
+ startIcon={<Plus />}
180
+ size="S"
181
+ >
157
182
  {formatMessage({
158
183
  id: getTrad('List.button.roles'),
159
184
  defaultMessage: 'Add new role',
160
185
  })}
161
- </Button>
162
- </CheckPermissions>
186
+ </LinkButton>
187
+ ) : null
163
188
  }
164
189
  />
165
190
 
166
- <ActionLayout
191
+ <Layouts.Action
167
192
  startActions={
168
- <SearchURLQuery
193
+ <SearchInput
169
194
  label={formatMessage({
170
195
  id: 'app.component.search.label',
171
196
  defaultMessage: 'Search',
@@ -174,9 +199,8 @@ const RoleListPage = () => {
174
199
  }
175
200
  />
176
201
 
177
- <ContentLayout>
178
- {!canRead && <NoPermissions />}
179
- {(isLoading || isLoadingForPermissions) && <LoadingIndicatorPage />}
202
+ <Layouts.Content>
203
+ {!canRead && <Page.NoPermissions />}
180
204
  {canRead && sortedRoles && sortedRoles?.length ? (
181
205
  <Table colCount={colCount} rowCount={rowCount}>
182
206
  <Thead>
@@ -215,24 +239,28 @@ const RoleListPage = () => {
215
239
  <TableBody
216
240
  sortedRoles={sortedRoles}
217
241
  canDelete={canDelete}
242
+ canUpdate={canUpdate}
218
243
  permissions={PERMISSIONS}
219
244
  setRoleToDelete={setRoleToDelete}
220
245
  onDelete={[showConfirmDelete, setShowConfirmDelete]}
221
246
  />
222
247
  </Table>
223
248
  ) : (
224
- <EmptyStateLayout content={emptyLayout[emptyContent]} />
249
+ <EmptyStateLayout content={formatMessage(emptyLayout[emptyContent])} />
225
250
  )}
226
- </ContentLayout>
227
- <ConfirmDialog
228
- isConfirmButtonLoading={isConfirmButtonLoading}
229
- onConfirm={handleConfirmDelete}
230
- onToggleDialog={handleShowConfirmDelete}
231
- isOpen={showConfirmDelete}
232
- />
233
- </Main>
234
- </Layout>
251
+ </Layouts.Content>
252
+ <Dialog.Root open={showConfirmDelete} onOpenChange={handleShowConfirmDelete}>
253
+ <ConfirmDialog onConfirm={handleConfirmDelete} />
254
+ </Dialog.Root>
255
+ </Page.Main>
256
+ </Layouts.Root>
235
257
  );
236
258
  };
237
259
 
238
- export default RoleListPage;
260
+ export const ProtectedRolesListPage = () => {
261
+ return (
262
+ <Page.Protect permissions={PERMISSIONS.accessRoles}>
263
+ <RolesListPage />
264
+ </Page.Protect>
265
+ );
266
+ };
@@ -60,7 +60,7 @@
60
60
  "Settings.roles.deleted": "Role deleted",
61
61
  "Settings.roles.edited": "Role edited",
62
62
  "Settings.section-label": "Users & Permissions plugin",
63
- "components.Input.error.validation.email": "This is an invalid email",
63
+ "components.Input.error.validation.email": "This is not a valid email",
64
64
  "components.Input.error.validation.json": "This doesn't match the JSON format",
65
65
  "components.Input.error.validation.max": "The value is too high.",
66
66
  "components.Input.error.validation.maxLength": "The value is too long.",
@@ -1,82 +1,82 @@
1
1
  {
2
- "BoundRoute.title": "绑定路由到",
3
- "EditForm.inputSelect.description.role": "新验证身份的用户将被赋予所选角色。",
4
- "EditForm.inputSelect.label.role": "认证用户的默认角色",
5
- "EditForm.inputToggle.description.email": "不允许用户使用不同的认证提供者(绑定的相同的电子邮件地址)来创建多个帐户。",
6
- "EditForm.inputToggle.description.email-confirmation": "启用(ON)后,新注册的用户会收到一封确认电子邮件。",
7
- "EditForm.inputToggle.description.email-confirmation-redirection": "确认您的电子邮件后,选择将您重定向到的位置。",
8
- "EditForm.inputToggle.description.email-reset-password": "应用程序的重置密码页面的 URL",
9
- "EditForm.inputToggle.description.sign-up": "当禁用(OFF)时,注册过程将被禁止。任何人无论使用任何的供应商都不可以订阅。",
10
- "EditForm.inputToggle.label.email": "每个电子邮件地址一个帐户",
11
- "EditForm.inputToggle.label.email-confirmation": "启用电子邮件确认",
12
- "EditForm.inputToggle.label.email-confirmation-redirection": "重定向 URL",
13
- "EditForm.inputToggle.label.email-reset-password": "重置密码页面 URL",
14
- "EditForm.inputToggle.label.sign-up": "启用注册",
15
- "EditForm.inputToggle.placeholder.email-confirmation-redirection": "例如: https://yourfrontend.com/reset-password",
16
- "EditForm.inputToggle.placeholder.email-reset-password": "例如: https://yourfrontend.com/reset-password",
17
- "EditPage.form.roles": "角色详情",
18
- "Email.template.data.loaded": "电子邮件模板已加载",
19
- "Email.template.email_confirmation": "邮箱地址确认",
20
- "Email.template.form.edit.label": "编辑模板",
21
- "Email.template.table.action.label": "操作",
22
- "Email.template.table.icon.label": "图标",
23
- "Email.template.table.name.label": "名称",
24
- "Form.advancedSettings.data.loaded": "高级设置数据已加载",
25
- "HeaderNav.link.advancedSettings": "高级设置",
26
- "HeaderNav.link.emailTemplates": "电子邮件模板",
27
- "HeaderNav.link.providers": "提供者",
28
- "Plugin.permissions.plugins.description": "定义 {name} 插件所有允许的操作。",
29
- "Plugins.header.description": "下面只列出路由绑定的操作。",
30
- "Plugins.header.title": "权限",
31
- "Policies.header.hint": "选择应用程序或插件的操作,然后点击 COG 图标显示绑定的路由",
32
- "Policies.header.title": "高级设置",
33
- "PopUpForm.Email.email_templates.inputDescription": "如果你不确定如何使用变量, {link}",
34
- "PopUpForm.Email.link.documentation": "查看我们的文档",
35
- "PopUpForm.Email.options.from.email.label": "发件人地址",
36
- "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com",
37
- "PopUpForm.Email.options.from.name.label": "发件人名称",
38
- "PopUpForm.Email.options.from.name.placeholder": "Kai Doe",
39
- "PopUpForm.Email.options.message.label": "消息",
40
- "PopUpForm.Email.options.object.label": "主题",
41
- "PopUpForm.Email.options.object.placeholder": "请为%APP_NAME%确认邮箱地址",
42
- "PopUpForm.Email.options.response_email.label": "回复邮件",
43
- "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com",
44
- "PopUpForm.Providers.enabled.description": "如果禁用,用户将无法使用此供应商。",
45
- "PopUpForm.Providers.enabled.label": "启用",
46
- "PopUpForm.Providers.key.label": "客户端 ID",
47
- "PopUpForm.Providers.key.placeholder": "文本",
48
- "PopUpForm.Providers.redirectURL.front-end.label": "重定向 URL",
49
- "PopUpForm.Providers.redirectURL.label": "添加到{provider}应用配置的跳转URL",
50
- "PopUpForm.Providers.secret.label": "客户端秘钥",
51
- "PopUpForm.Providers.secret.placeholder": "文本",
52
- "PopUpForm.Providers.subdomain.label": "主机URI(子域名)",
53
- "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com",
54
- "PopUpForm.header.edit.email-templates": "编辑电子邮件模版",
55
- "PopUpForm.header.edit.providers": "编辑提供商",
56
- "Providers.data.loaded": "提供商已加载",
57
- "Providers.status": "状态",
58
- "Roles.empty": "您还没有任何角色。",
59
- "Roles.empty.search": "没有与搜索相匹配的角色。",
60
- "Settings.roles.deleted": "角色已被删除",
61
- "Settings.roles.edited": "角色编辑完成",
62
- "Settings.section-label": "用户及权限插件",
63
- "components.Input.error.validation.email": "这是一个无效的电子邮件",
64
- "components.Input.error.validation.json": "这不符合JSON格式",
65
- "components.Input.error.validation.max": "值过高。",
66
- "components.Input.error.validation.maxLength": "值过长。",
67
- "components.Input.error.validation.min": "值太低。",
68
- "components.Input.error.validation.minLength": "值太短。",
69
- "components.Input.error.validation.minSupMax": "不能超过上限",
70
- "components.Input.error.validation.regex": "该值不符合正则表达式。",
71
- "components.Input.error.validation.required": "该值为必填项。",
72
- "components.Input.error.validation.unique": "该值已被使用。",
73
- "notification.success.submit": "设置已被更新",
74
- "page.title": "设置 - 角色",
75
- "plugin.description.long": "使用基于 JWT 的完整身份验证过程来保护 API。这个插件还有一个 ACL 策略,允许你管理用户组之间的权限。",
76
- "plugin.description.short": "使用基于 JWT 的完整身份验证过程保护 API",
77
- "plugin.name": "角色及权限",
78
- "popUpWarning.button.cancel": "取消",
79
- "popUpWarning.button.confirm": "确认",
80
- "popUpWarning.title": "请确认",
81
- "popUpWarning.warning.cancel": "你确定你要取消你的修改?"
2
+ "BoundRoute.title": "绑定路由到",
3
+ "EditForm.inputSelect.description.role": "新验证身份的用户将被赋予所选角色。",
4
+ "EditForm.inputSelect.label.role": "认证用户的默认角色",
5
+ "EditForm.inputToggle.description.email": "不允许用户使用不同的认证提供商但相同的电子邮件地址来创建多个账户。",
6
+ "EditForm.inputToggle.description.email-confirmation": "启用(开)后,新注册的用户会收到一封确认电子邮件。",
7
+ "EditForm.inputToggle.description.email-confirmation-redirection": "确认您的电子邮件后,选择将您重定向到的位置。",
8
+ "EditForm.inputToggle.description.email-reset-password": "应用程序的重置密码页面的网址",
9
+ "EditForm.inputToggle.description.sign-up": "当禁用(关)时,注册过程将被禁止。任何人无论使用任何的供应商都不可以订阅。",
10
+ "EditForm.inputToggle.label.email": "每个电子邮件地址对应一个账户",
11
+ "EditForm.inputToggle.label.email-confirmation": "启用电子邮件确认",
12
+ "EditForm.inputToggle.label.email-confirmation-redirection": "重定向网址",
13
+ "EditForm.inputToggle.label.email-reset-password": "重置密码页面网址",
14
+ "EditForm.inputToggle.label.sign-up": "启用注册",
15
+ "EditForm.inputToggle.placeholder.email-confirmation-redirection": "例如: https://yourfrontend.com/email-confirmation-redirection",
16
+ "EditForm.inputToggle.placeholder.email-reset-password": "例如: https://yourfrontend.com/reset-password",
17
+ "EditPage.form.roles": "角色详情",
18
+ "Email.template.data.loaded": "电子邮件模板已加载",
19
+ "Email.template.email_confirmation": "邮箱地址确认",
20
+ "Email.template.form.edit.label": "编辑模板",
21
+ "Email.template.table.action.label": "操作",
22
+ "Email.template.table.icon.label": "图标",
23
+ "Email.template.table.name.label": "名称",
24
+ "Form.advancedSettings.data.loaded": "高级设置数据已加载",
25
+ "HeaderNav.link.advancedSettings": "高级设置",
26
+ "HeaderNav.link.emailTemplates": "电子邮件模板",
27
+ "HeaderNav.link.providers": "提供商",
28
+ "Plugin.permissions.plugins.description": "定义 {name} 插件所有允许的操作。",
29
+ "Plugins.header.description": "下面只列出路由绑定的操作。",
30
+ "Plugins.header.title": "权限",
31
+ "Policies.header.hint": "选择应用程序或插件对应的操作,然后点击齿轮图标显示绑定的路由",
32
+ "Policies.header.title": "高级设置",
33
+ "PopUpForm.Email.email_templates.inputDescription": "如果你不确定如何使用变量, {link}",
34
+ "PopUpForm.Email.link.documentation": "查看我们的文档",
35
+ "PopUpForm.Email.options.from.email.label": "发件人地址",
36
+ "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com",
37
+ "PopUpForm.Email.options.from.name.label": "发件人名称",
38
+ "PopUpForm.Email.options.from.name.placeholder": "Kai Doe",
39
+ "PopUpForm.Email.options.message.label": "消息",
40
+ "PopUpForm.Email.options.object.label": "主题",
41
+ "PopUpForm.Email.options.object.placeholder": "请为%APP_NAME%确认邮箱地址",
42
+ "PopUpForm.Email.options.response_email.label": "回复邮件",
43
+ "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com",
44
+ "PopUpForm.Providers.enabled.description": "如果禁用,用户将无法使用此供应商。",
45
+ "PopUpForm.Providers.enabled.label": "启用",
46
+ "PopUpForm.Providers.key.label": "客户端 ID",
47
+ "PopUpForm.Providers.key.placeholder": "文本",
48
+ "PopUpForm.Providers.redirectURL.front-end.label": "重定向网址",
49
+ "PopUpForm.Providers.redirectURL.label": "添加到{provider}应用配置的跳转网址",
50
+ "PopUpForm.Providers.secret.label": "客户端秘钥",
51
+ "PopUpForm.Providers.secret.placeholder": "文本",
52
+ "PopUpForm.Providers.subdomain.label": "主机URI(子域名)",
53
+ "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com",
54
+ "PopUpForm.header.edit.email-templates": "编辑电子邮件模版",
55
+ "PopUpForm.header.edit.providers": "编辑提供商",
56
+ "Providers.data.loaded": "提供商已加载",
57
+ "Providers.status": "状态",
58
+ "Roles.empty": "您还没有任何角色。",
59
+ "Roles.empty.search": "没有与搜索相匹配的角色。",
60
+ "Settings.roles.deleted": "角色已被删除",
61
+ "Settings.roles.edited": "角色编辑完成",
62
+ "Settings.section-label": "用户及权限插件",
63
+ "components.Input.error.validation.email": "这是一个无效的电子邮件",
64
+ "components.Input.error.validation.json": "这不符合JSON格式",
65
+ "components.Input.error.validation.max": "值过高。",
66
+ "components.Input.error.validation.maxLength": "值过长。",
67
+ "components.Input.error.validation.min": "值太低。",
68
+ "components.Input.error.validation.minLength": "值太短。",
69
+ "components.Input.error.validation.minSupMax": "不能超过上限",
70
+ "components.Input.error.validation.regex": "该值不符合正则表达式。",
71
+ "components.Input.error.validation.required": "该值为必填项。",
72
+ "components.Input.error.validation.unique": "该值已被使用。",
73
+ "notification.success.submit": "设置已被更新",
74
+ "page.title": "设置 - 角色",
75
+ "plugin.description.long": "使用基于 JWT 的完整身份验证过程来保护 API。这个插件还有一个 ACL 策略,允许你管理用户组之间的权限。",
76
+ "plugin.description.short": "使用基于 JWT 的完整身份验证过程保护 API",
77
+ "plugin.name": "用户及权限插件",
78
+ "popUpWarning.button.cancel": "取消",
79
+ "popUpWarning.button.confirm": "确认",
80
+ "popUpWarning.title": "请确认",
81
+ "popUpWarning.warning.cancel": "你确定你要取消你的修改?"
82
82
  }
@@ -0,0 +1,13 @@
1
+ const prefixPluginTranslations = (trad, pluginId) => {
2
+ if (!pluginId) {
3
+ throw new TypeError("pluginId can't be empty");
4
+ }
5
+
6
+ return Object.keys(trad).reduce((acc, current) => {
7
+ acc[`${pluginId}.${current}`] = trad[current];
8
+
9
+ return acc;
10
+ }, {});
11
+ };
12
+
13
+ export { prefixPluginTranslations };
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const ar = {
4
+ "BoundRoute.title": "Bound route to",
5
+ "EditForm.inputSelect.description.role": "سيتم إرفاق المستخدم المصادق الجديد بالدور المحدد.",
6
+ "EditForm.inputSelect.label.role": "الدور الافتراضي للمستخدمين المصادقين",
7
+ "EditForm.inputToggle.description.email": "عدم السماح للمستخدم بإنشاء حسابات متعددة باستخدام نفس عنوان البريد الإلكتروني مع موفري مصادقة مختلفين.",
8
+ "EditForm.inputToggle.description.sign-up": "عند تعطيل (OFF) ، يتم حظر عملية التسجيل. لا أحد يستطيع الاشتراك بعد الآن بغض النظر عن المزود المستخدم.",
9
+ "EditForm.inputToggle.label.email": "حساب واحد لكل بريد الاكتروني",
10
+ "EditForm.inputToggle.label.sign-up": "تفعيل التسجيل",
11
+ "HeaderNav.link.advancedSettings": "إعدادات متقدمة",
12
+ "HeaderNav.link.emailTemplates": "قوالب الإيميل",
13
+ "HeaderNav.link.providers": "مزودين",
14
+ "Plugin.permissions.plugins.description": "حدد جميع الإجراءات المسموح بها للإضافة {name}.",
15
+ "Plugins.header.description": "يتم سرد الإجراءات المحددة المرتبطة بالمسار أدناه.",
16
+ "Plugins.header.title": "الصلاحيات",
17
+ "Policies.header.hint": "حدد إجراءات التطبيق أو إجراءات الإضافة وانقر على رمز الترس لعرض المسار المرتبط",
18
+ "Policies.header.title": "إعدادات متقدمة",
19
+ "PopUpForm.Email.email_templates.inputDescription": "إذا كنت غير متأكد من كيفية استخدام المتغيرات ، {link}",
20
+ "PopUpForm.Email.options.from.email.label": "البريد الإلكتروني للشاحن",
21
+ "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com",
22
+ "PopUpForm.Email.options.from.name.label": "أسم المورد",
23
+ "PopUpForm.Email.options.from.name.placeholder": "Kai Doe",
24
+ "PopUpForm.Email.options.message.label": "الرسالة",
25
+ "PopUpForm.Email.options.object.label": "موضوع",
26
+ "PopUpForm.Email.options.response_email.label": "البريد الإلكتروني للاستجابة",
27
+ "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com",
28
+ "PopUpForm.Providers.enabled.description": "في حالة التعطيل ، لن يتمكن المستخدمون من استخدام هذا الموفر.",
29
+ "PopUpForm.Providers.enabled.label": "مفعل",
30
+ "PopUpForm.Providers.key.label": "معرف العميل",
31
+ "PopUpForm.Providers.key.placeholder": "نص",
32
+ "PopUpForm.Providers.redirectURL.front-end.label": "عنوان URL لإعادة التوجيه إلى تطبيق الواجهة الأمامية (front-end)",
33
+ "PopUpForm.Providers.secret.label": "سر العميل (Client Secret)",
34
+ "PopUpForm.Providers.secret.placeholder": "نص",
35
+ "PopUpForm.Providers.subdomain.label": "Host URI (Subdomain)",
36
+ "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com",
37
+ "PopUpForm.header.edit.email-templates": "تحرير قوالب البريد الإلكتروني",
38
+ "notification.success.submit": "تم تحديث الإعدادات",
39
+ "plugin.description.long": "حماية الـAPI الخاص بك مع عملية مصادقة كاملة استناداً إلى JWT. يأتي هذا الملحق أيضًا مع إستراتيجية ACL التي تسمح لك بإدارة الأذونات بين مجموعات المستخدمين.",
40
+ "plugin.description.short": "حماية الـAPI الخاص بك مع عملية مصادقة كاملة استناداً إلى JWT",
41
+ "plugin.name": "الأدوار والصلاحية"
42
+ };
43
+ exports.default = ar;
44
+ //# sourceMappingURL=ar-BguGUqwK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ar-BguGUqwK.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,44 @@
1
+ const ar = {
2
+ "BoundRoute.title": "Bound route to",
3
+ "EditForm.inputSelect.description.role": "سيتم إرفاق المستخدم المصادق الجديد بالدور المحدد.",
4
+ "EditForm.inputSelect.label.role": "الدور الافتراضي للمستخدمين المصادقين",
5
+ "EditForm.inputToggle.description.email": "عدم السماح للمستخدم بإنشاء حسابات متعددة باستخدام نفس عنوان البريد الإلكتروني مع موفري مصادقة مختلفين.",
6
+ "EditForm.inputToggle.description.sign-up": "عند تعطيل (OFF) ، يتم حظر عملية التسجيل. لا أحد يستطيع الاشتراك بعد الآن بغض النظر عن المزود المستخدم.",
7
+ "EditForm.inputToggle.label.email": "حساب واحد لكل بريد الاكتروني",
8
+ "EditForm.inputToggle.label.sign-up": "تفعيل التسجيل",
9
+ "HeaderNav.link.advancedSettings": "إعدادات متقدمة",
10
+ "HeaderNav.link.emailTemplates": "قوالب الإيميل",
11
+ "HeaderNav.link.providers": "مزودين",
12
+ "Plugin.permissions.plugins.description": "حدد جميع الإجراءات المسموح بها للإضافة {name}.",
13
+ "Plugins.header.description": "يتم سرد الإجراءات المحددة المرتبطة بالمسار أدناه.",
14
+ "Plugins.header.title": "الصلاحيات",
15
+ "Policies.header.hint": "حدد إجراءات التطبيق أو إجراءات الإضافة وانقر على رمز الترس لعرض المسار المرتبط",
16
+ "Policies.header.title": "إعدادات متقدمة",
17
+ "PopUpForm.Email.email_templates.inputDescription": "إذا كنت غير متأكد من كيفية استخدام المتغيرات ، {link}",
18
+ "PopUpForm.Email.options.from.email.label": "البريد الإلكتروني للشاحن",
19
+ "PopUpForm.Email.options.from.email.placeholder": "kai@doe.com",
20
+ "PopUpForm.Email.options.from.name.label": "أسم المورد",
21
+ "PopUpForm.Email.options.from.name.placeholder": "Kai Doe",
22
+ "PopUpForm.Email.options.message.label": "الرسالة",
23
+ "PopUpForm.Email.options.object.label": "موضوع",
24
+ "PopUpForm.Email.options.response_email.label": "البريد الإلكتروني للاستجابة",
25
+ "PopUpForm.Email.options.response_email.placeholder": "kai@doe.com",
26
+ "PopUpForm.Providers.enabled.description": "في حالة التعطيل ، لن يتمكن المستخدمون من استخدام هذا الموفر.",
27
+ "PopUpForm.Providers.enabled.label": "مفعل",
28
+ "PopUpForm.Providers.key.label": "معرف العميل",
29
+ "PopUpForm.Providers.key.placeholder": "نص",
30
+ "PopUpForm.Providers.redirectURL.front-end.label": "عنوان URL لإعادة التوجيه إلى تطبيق الواجهة الأمامية (front-end)",
31
+ "PopUpForm.Providers.secret.label": "سر العميل (Client Secret)",
32
+ "PopUpForm.Providers.secret.placeholder": "نص",
33
+ "PopUpForm.Providers.subdomain.label": "Host URI (Subdomain)",
34
+ "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com",
35
+ "PopUpForm.header.edit.email-templates": "تحرير قوالب البريد الإلكتروني",
36
+ "notification.success.submit": "تم تحديث الإعدادات",
37
+ "plugin.description.long": "حماية الـAPI الخاص بك مع عملية مصادقة كاملة استناداً إلى JWT. يأتي هذا الملحق أيضًا مع إستراتيجية ACL التي تسمح لك بإدارة الأذونات بين مجموعات المستخدمين.",
38
+ "plugin.description.short": "حماية الـAPI الخاص بك مع عملية مصادقة كاملة استناداً إلى JWT",
39
+ "plugin.name": "الأدوار والصلاحية"
40
+ };
41
+ export {
42
+ ar as default
43
+ };
44
+ //# sourceMappingURL=ar-CK8BRRXB.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ar-CK8BRRXB.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,50 @@
1
+ const cs = {
2
+ "BoundRoute.title": "Spojit adresu s",
3
+ "EditForm.inputSelect.description.role": "Připojí nově autentifikovaného uživatele ke svolené roli.",
4
+ "EditForm.inputSelect.label.role": "Výchozí role pro autentifikovaného uživatele",
5
+ "EditForm.inputToggle.description.email": "Zabránit uživateli vytvářet různé účty se stejným e-mailem a jinými poskytovateli autentifikace.",
6
+ "EditForm.inputToggle.description.email-confirmation": "Pokud je tato funkce povolena (ON), nově registrovaní uživatelé dostanou potvrzující e-mail.",
7
+ "EditForm.inputToggle.description.email-confirmation-redirection": "Po potvrzení e-mailu, zvolte kam budete přesměrováni.",
8
+ "EditForm.inputToggle.description.email-reset-password": "Adresa stránky obnovení hesla vaší aplikace",
9
+ "EditForm.inputToggle.description.sign-up": "Pokud je tato možnost zakázána (OFF), není možno projít registrací. Nikdo se již nemůže připojit, bez ohledu jakého použije poskytovatele.",
10
+ "EditForm.inputToggle.label.email": "Jeden účet na e-mail",
11
+ "EditForm.inputToggle.label.email-confirmation": "Povolit potvrzení z e-mailu",
12
+ "EditForm.inputToggle.label.email-confirmation-redirection": "Adresa pro přesměrování",
13
+ "EditForm.inputToggle.label.email-reset-password": "Stránka pro obnovení hesla",
14
+ "EditForm.inputToggle.label.sign-up": "Povolit registrace",
15
+ "HeaderNav.link.advancedSettings": "Pokročilá nastavení",
16
+ "HeaderNav.link.emailTemplates": "E-mailové šablony",
17
+ "HeaderNav.link.providers": "Poskytovatelé",
18
+ "Plugin.permissions.plugins.description": "Nastavit všechny akce pro zásuvný modul {name}.",
19
+ "Plugins.header.description": "Pouze akce spojené s adresou jsou vypsány níže.",
20
+ "Plugins.header.title": "Povolení",
21
+ "Policies.header.hint": "Vyberte akce aplikace, nebo akce zásuvného modulu a klikněte na ikonku ozubeného kolečka pro zobrazení adresy s nimi spojenou.",
22
+ "Policies.header.title": "Pokročilá nastavení",
23
+ "PopUpForm.Email.email_templates.inputDescription": "Pokud si nejste jisti jak používat proměnné, {link}",
24
+ "PopUpForm.Email.options.from.email.label": "Odesilatelův e-mail",
25
+ "PopUpForm.Email.options.from.email.placeholder": "jannovak@gmail.com",
26
+ "PopUpForm.Email.options.from.name.label": "Jméno odesilatele",
27
+ "PopUpForm.Email.options.from.name.placeholder": "Jan Novák",
28
+ "PopUpForm.Email.options.message.label": "Zpráva",
29
+ "PopUpForm.Email.options.object.label": "Předmět",
30
+ "PopUpForm.Email.options.response_email.label": "Response e-mail",
31
+ "PopUpForm.Email.options.response_email.placeholder": "jannovak@gmail.com",
32
+ "PopUpForm.Providers.enabled.description": "If disabled, users won't be able to use this provider.",
33
+ "PopUpForm.Providers.enabled.label": "Povolit",
34
+ "PopUpForm.Providers.key.label": "Client ID",
35
+ "PopUpForm.Providers.key.placeholder": "TEXT",
36
+ "PopUpForm.Providers.redirectURL.front-end.label": "Adresa pro přesměrování na vaši front-end aplikaci",
37
+ "PopUpForm.Providers.secret.label": "Client Secret",
38
+ "PopUpForm.Providers.secret.placeholder": "TEXT",
39
+ "PopUpForm.Providers.subdomain.label": "Host URI (Subdomain)",
40
+ "PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com",
41
+ "PopUpForm.header.edit.email-templates": "Upravit e-mailové šablony",
42
+ "notification.success.submit": "Nastavení bylo aktualizování",
43
+ "plugin.description.long": "Chraňte své API pomocí kompletního autentifikačního procesu, založeného na JWT. Tento zásuvný modul obsahuje ACL strategii, která vám umožní spravovat oprávnění mezi skupinami uživatelů.",
44
+ "plugin.description.short": "Chraňte své API pomocí kompletního autentifikačního procesu, založeného na JWT",
45
+ "plugin.name": "Role a oprávnění"
46
+ };
47
+ export {
48
+ cs as default
49
+ };
50
+ //# sourceMappingURL=cs-BVigMk0l.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cs-BVigMk0l.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}