@strapi/plugin-users-permissions 0.0.0-next.e50ef5e2ea57ecf3da5bcf308508b51ee3c0deca → 0.0.0-next.e5b87a54008c9de2b3286a4774635dcf69895d9b
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/Permissions/PermissionRow/SubCategory.jsx +8 -1
- package/admin/src/components/Policies/index.jsx +1 -0
- package/admin/src/components/UsersPermissions/index.jsx +1 -0
- package/admin/src/pages/AdvancedSettings/index.jsx +1 -0
- package/admin/src/pages/EmailTemplates/components/EmailForm.jsx +2 -1
- package/admin/src/pages/Providers/index.jsx +74 -76
- package/admin/src/pages/Roles/pages/CreatePage.jsx +26 -8
- package/admin/src/pages/Roles/pages/EditPage.jsx +13 -7
- package/admin/src/pages/Roles/pages/ListPage/index.jsx +92 -93
- package/admin/src/translations/de.json +27 -2
- package/admin/src/translations/en.json +1 -0
- package/dist/admin/components/FormModal/Input/index.js.map +1 -1
- package/dist/admin/components/FormModal/Input/index.mjs.map +1 -1
- package/dist/admin/components/Permissions/PermissionRow/SubCategory.js +3 -1
- package/dist/admin/components/Permissions/PermissionRow/SubCategory.js.map +1 -1
- package/dist/admin/components/Permissions/PermissionRow/SubCategory.mjs +3 -1
- package/dist/admin/components/Permissions/PermissionRow/SubCategory.mjs.map +1 -1
- package/dist/admin/components/Permissions/PermissionRow/index.js.map +1 -1
- package/dist/admin/components/Permissions/PermissionRow/index.mjs.map +1 -1
- package/dist/admin/components/Policies/index.js +1 -0
- package/dist/admin/components/Policies/index.js.map +1 -1
- package/dist/admin/components/Policies/index.mjs +1 -0
- package/dist/admin/components/Policies/index.mjs.map +1 -1
- package/dist/admin/components/UsersPermissions/index.js +1 -0
- package/dist/admin/components/UsersPermissions/index.js.map +1 -1
- package/dist/admin/components/UsersPermissions/index.mjs +1 -0
- package/dist/admin/components/UsersPermissions/index.mjs.map +1 -1
- package/dist/admin/pages/AdvancedSettings/index.js +1 -0
- package/dist/admin/pages/AdvancedSettings/index.js.map +1 -1
- package/dist/admin/pages/AdvancedSettings/index.mjs +1 -0
- package/dist/admin/pages/AdvancedSettings/index.mjs.map +1 -1
- package/dist/admin/pages/EmailTemplates/components/EmailForm.js +2 -1
- package/dist/admin/pages/EmailTemplates/components/EmailForm.js.map +1 -1
- package/dist/admin/pages/EmailTemplates/components/EmailForm.mjs +2 -1
- package/dist/admin/pages/EmailTemplates/components/EmailForm.mjs.map +1 -1
- package/dist/admin/pages/Providers/index.js +84 -88
- package/dist/admin/pages/Providers/index.js.map +1 -1
- package/dist/admin/pages/Providers/index.mjs +84 -88
- package/dist/admin/pages/Providers/index.mjs.map +1 -1
- package/dist/admin/pages/Roles/pages/CreatePage.js +15 -1
- package/dist/admin/pages/Roles/pages/CreatePage.js.map +1 -1
- package/dist/admin/pages/Roles/pages/CreatePage.mjs +17 -3
- package/dist/admin/pages/Roles/pages/CreatePage.mjs.map +1 -1
- package/dist/admin/pages/Roles/pages/EditPage.js +14 -3
- package/dist/admin/pages/Roles/pages/EditPage.js.map +1 -1
- package/dist/admin/pages/Roles/pages/EditPage.mjs +15 -4
- package/dist/admin/pages/Roles/pages/EditPage.mjs.map +1 -1
- package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.js.map +1 -1
- package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.mjs.map +1 -1
- package/dist/admin/pages/Roles/pages/ListPage/index.js +96 -99
- package/dist/admin/pages/Roles/pages/ListPage/index.js.map +1 -1
- package/dist/admin/pages/Roles/pages/ListPage/index.mjs +96 -99
- package/dist/admin/pages/Roles/pages/ListPage/index.mjs.map +1 -1
- package/dist/admin/translations/de.json.js +27 -2
- package/dist/admin/translations/de.json.js.map +1 -1
- package/dist/admin/translations/de.json.mjs +27 -2
- package/dist/admin/translations/de.json.mjs.map +1 -1
- package/dist/admin/translations/en.json.js +1 -0
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +1 -0
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/utils/getTrad.js.map +1 -1
- package/dist/admin/utils/getTrad.mjs.map +1 -1
- package/dist/admin/utils/prefixPluginTranslations.js.map +1 -1
- package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -1
- package/dist/server/bootstrap/index.js +28 -7
- package/dist/server/bootstrap/index.js.map +1 -1
- package/dist/server/bootstrap/index.mjs +28 -7
- package/dist/server/bootstrap/index.mjs.map +1 -1
- package/dist/server/config.js +16 -0
- package/dist/server/config.js.map +1 -1
- package/dist/server/config.mjs +16 -0
- package/dist/server/config.mjs.map +1 -1
- package/dist/server/controllers/auth.js +204 -3
- package/dist/server/controllers/auth.js.map +1 -1
- package/dist/server/controllers/auth.mjs +204 -3
- package/dist/server/controllers/auth.mjs.map +1 -1
- package/dist/server/controllers/content-manager-user.js +3 -3
- package/dist/server/controllers/content-manager-user.js.map +1 -1
- package/dist/server/controllers/content-manager-user.mjs +3 -3
- package/dist/server/controllers/content-manager-user.mjs.map +1 -1
- package/dist/server/controllers/validation/user.js +6 -1
- package/dist/server/controllers/validation/user.js.map +1 -1
- package/dist/server/controllers/validation/user.mjs +6 -1
- package/dist/server/controllers/validation/user.mjs.map +1 -1
- package/dist/server/graphql/resolvers-configs.js.map +1 -1
- package/dist/server/graphql/resolvers-configs.mjs.map +1 -1
- package/dist/server/middlewares/rateLimit.js.map +1 -1
- package/dist/server/middlewares/rateLimit.mjs.map +1 -1
- package/dist/server/routes/content-api/auth.js +155 -91
- package/dist/server/routes/content-api/auth.js.map +1 -1
- package/dist/server/routes/content-api/auth.mjs +155 -91
- package/dist/server/routes/content-api/auth.mjs.map +1 -1
- package/dist/server/routes/content-api/index.js +11 -9
- package/dist/server/routes/content-api/index.js.map +1 -1
- package/dist/server/routes/content-api/index.mjs +11 -9
- package/dist/server/routes/content-api/index.mjs.map +1 -1
- package/dist/server/routes/content-api/permissions.js +14 -7
- package/dist/server/routes/content-api/permissions.js.map +1 -1
- package/dist/server/routes/content-api/permissions.mjs +14 -7
- package/dist/server/routes/content-api/permissions.mjs.map +1 -1
- package/dist/server/routes/content-api/role.js +61 -27
- package/dist/server/routes/content-api/role.js.map +1 -1
- package/dist/server/routes/content-api/role.mjs +61 -27
- package/dist/server/routes/content-api/role.mjs.map +1 -1
- package/dist/server/routes/content-api/user.js +119 -57
- package/dist/server/routes/content-api/user.js.map +1 -1
- package/dist/server/routes/content-api/user.mjs +119 -57
- package/dist/server/routes/content-api/user.mjs.map +1 -1
- package/dist/server/routes/content-api/validation.js +217 -0
- package/dist/server/routes/content-api/validation.js.map +1 -0
- package/dist/server/routes/content-api/validation.mjs +215 -0
- package/dist/server/routes/content-api/validation.mjs.map +1 -0
- package/dist/server/services/constants.js +19 -0
- package/dist/server/services/constants.js.map +1 -0
- package/dist/server/services/constants.mjs +17 -0
- package/dist/server/services/constants.mjs.map +1 -0
- package/dist/server/services/jwt.js +45 -2
- package/dist/server/services/jwt.js.map +1 -1
- package/dist/server/services/jwt.mjs +45 -2
- package/dist/server/services/jwt.mjs.map +1 -1
- package/dist/server/services/providers-registry.js.map +1 -1
- package/dist/server/services/providers-registry.mjs.map +1 -1
- package/dist/server/services/role.js.map +1 -1
- package/dist/server/services/role.mjs.map +1 -1
- package/dist/server/services/user.js +29 -20
- package/dist/server/services/user.js.map +1 -1
- package/dist/server/services/user.mjs +29 -20
- package/dist/server/services/user.mjs.map +1 -1
- package/dist/server/services/users-permissions.js +12 -3
- package/dist/server/services/users-permissions.js.map +1 -1
- package/dist/server/services/users-permissions.mjs +12 -3
- package/dist/server/services/users-permissions.mjs.map +1 -1
- package/package.json +13 -12
- package/server/bootstrap/index.js +31 -0
- package/server/config.js +22 -0
- package/server/controllers/auth.js +246 -8
- package/server/controllers/content-manager-user.js +3 -4
- package/server/controllers/validation/user.js +12 -1
- package/server/routes/content-api/auth.js +119 -71
- package/server/routes/content-api/index.js +11 -4
- package/server/routes/content-api/permissions.js +14 -7
- package/server/routes/content-api/role.js +57 -27
- package/server/routes/content-api/user.js +108 -51
- package/server/routes/content-api/validation.js +250 -0
- package/server/services/constants.js +9 -0
- package/server/services/jwt.js +50 -2
- package/server/services/user.js +11 -0
- package/server/services/users-permissions.js +6 -2
|
@@ -102,7 +102,7 @@ const RolesListPage = ()=>{
|
|
|
102
102
|
if (isLoading) {
|
|
103
103
|
return /*#__PURE__*/ jsx(Page.Loading, {});
|
|
104
104
|
}
|
|
105
|
-
return /*#__PURE__*/ jsxs(
|
|
105
|
+
return /*#__PURE__*/ jsxs(Page.Main, {
|
|
106
106
|
children: [
|
|
107
107
|
/*#__PURE__*/ jsx(Page.Title, {
|
|
108
108
|
children: formatMessage({
|
|
@@ -112,113 +112,110 @@ const RolesListPage = ()=>{
|
|
|
112
112
|
name: pageTitle
|
|
113
113
|
})
|
|
114
114
|
}),
|
|
115
|
-
/*#__PURE__*/
|
|
115
|
+
/*#__PURE__*/ jsx(Layouts.Header, {
|
|
116
|
+
title: formatMessage({
|
|
117
|
+
id: 'global.roles',
|
|
118
|
+
defaultMessage: 'Roles'
|
|
119
|
+
}),
|
|
120
|
+
subtitle: formatMessage({
|
|
121
|
+
id: 'Settings.roles.list.description',
|
|
122
|
+
defaultMessage: 'List of roles'
|
|
123
|
+
}),
|
|
124
|
+
primaryAction: canCreate ? /*#__PURE__*/ jsx(LinkButton, {
|
|
125
|
+
to: "new",
|
|
126
|
+
tag: NavLink,
|
|
127
|
+
onClick: ()=>trackUsage('willCreateRole'),
|
|
128
|
+
startIcon: /*#__PURE__*/ jsx(Plus, {}),
|
|
129
|
+
size: "S",
|
|
130
|
+
fullWidth: true,
|
|
131
|
+
children: formatMessage({
|
|
132
|
+
id: getTrad('List.button.roles'),
|
|
133
|
+
defaultMessage: 'Add new role'
|
|
134
|
+
})
|
|
135
|
+
}) : null
|
|
136
|
+
}),
|
|
137
|
+
/*#__PURE__*/ jsx(Layouts.Action, {
|
|
138
|
+
startActions: /*#__PURE__*/ jsx(SearchInput, {
|
|
139
|
+
label: formatMessage({
|
|
140
|
+
id: 'app.component.search.label',
|
|
141
|
+
defaultMessage: 'Search'
|
|
142
|
+
})
|
|
143
|
+
})
|
|
144
|
+
}),
|
|
145
|
+
/*#__PURE__*/ jsxs(Layouts.Content, {
|
|
116
146
|
children: [
|
|
117
|
-
/*#__PURE__*/ jsx(
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
}),
|
|
122
|
-
subtitle: formatMessage({
|
|
123
|
-
id: 'Settings.roles.list.description',
|
|
124
|
-
defaultMessage: 'List of roles'
|
|
125
|
-
}),
|
|
126
|
-
primaryAction: canCreate ? /*#__PURE__*/ jsx(LinkButton, {
|
|
127
|
-
to: "new",
|
|
128
|
-
tag: NavLink,
|
|
129
|
-
onClick: ()=>trackUsage('willCreateRole'),
|
|
130
|
-
startIcon: /*#__PURE__*/ jsx(Plus, {}),
|
|
131
|
-
size: "S",
|
|
132
|
-
children: formatMessage({
|
|
133
|
-
id: getTrad('List.button.roles'),
|
|
134
|
-
defaultMessage: 'Add new role'
|
|
135
|
-
})
|
|
136
|
-
}) : null
|
|
137
|
-
}),
|
|
138
|
-
/*#__PURE__*/ jsx(Layouts.Action, {
|
|
139
|
-
startActions: /*#__PURE__*/ jsx(SearchInput, {
|
|
140
|
-
label: formatMessage({
|
|
141
|
-
id: 'app.component.search.label',
|
|
142
|
-
defaultMessage: 'Search'
|
|
143
|
-
})
|
|
144
|
-
})
|
|
145
|
-
}),
|
|
146
|
-
/*#__PURE__*/ jsxs(Layouts.Content, {
|
|
147
|
+
!canRead && /*#__PURE__*/ jsx(Page.NoPermissions, {}),
|
|
148
|
+
canRead && sortedRoles && sortedRoles?.length ? /*#__PURE__*/ jsxs(Table, {
|
|
149
|
+
colCount: colCount,
|
|
150
|
+
rowCount: rowCount,
|
|
147
151
|
children: [
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
variant: "sigma",
|
|
179
|
-
textColor: "neutral600",
|
|
180
|
-
children: formatMessage({
|
|
181
|
-
id: 'global.users',
|
|
182
|
-
defaultMessage: 'Users'
|
|
183
|
-
})
|
|
184
|
-
})
|
|
185
|
-
}),
|
|
186
|
-
/*#__PURE__*/ jsx(Th, {
|
|
187
|
-
children: /*#__PURE__*/ jsx(VisuallyHidden, {
|
|
188
|
-
children: formatMessage({
|
|
189
|
-
id: 'global.actions',
|
|
190
|
-
defaultMessage: 'Actions'
|
|
191
|
-
})
|
|
192
|
-
})
|
|
152
|
+
/*#__PURE__*/ jsx(Thead, {
|
|
153
|
+
children: /*#__PURE__*/ jsxs(Tr, {
|
|
154
|
+
children: [
|
|
155
|
+
/*#__PURE__*/ jsx(Th, {
|
|
156
|
+
children: /*#__PURE__*/ jsx(Typography, {
|
|
157
|
+
variant: "sigma",
|
|
158
|
+
textColor: "neutral600",
|
|
159
|
+
children: formatMessage({
|
|
160
|
+
id: 'global.name',
|
|
161
|
+
defaultMessage: 'Name'
|
|
162
|
+
})
|
|
163
|
+
})
|
|
164
|
+
}),
|
|
165
|
+
/*#__PURE__*/ jsx(Th, {
|
|
166
|
+
children: /*#__PURE__*/ jsx(Typography, {
|
|
167
|
+
variant: "sigma",
|
|
168
|
+
textColor: "neutral600",
|
|
169
|
+
children: formatMessage({
|
|
170
|
+
id: 'global.description',
|
|
171
|
+
defaultMessage: 'Description'
|
|
172
|
+
})
|
|
173
|
+
})
|
|
174
|
+
}),
|
|
175
|
+
/*#__PURE__*/ jsx(Th, {
|
|
176
|
+
children: /*#__PURE__*/ jsx(Typography, {
|
|
177
|
+
variant: "sigma",
|
|
178
|
+
textColor: "neutral600",
|
|
179
|
+
children: formatMessage({
|
|
180
|
+
id: 'global.users',
|
|
181
|
+
defaultMessage: 'Users'
|
|
193
182
|
})
|
|
194
|
-
|
|
183
|
+
})
|
|
184
|
+
}),
|
|
185
|
+
/*#__PURE__*/ jsx(Th, {
|
|
186
|
+
children: /*#__PURE__*/ jsx(VisuallyHidden, {
|
|
187
|
+
children: formatMessage({
|
|
188
|
+
id: 'global.actions',
|
|
189
|
+
defaultMessage: 'Actions'
|
|
190
|
+
})
|
|
191
|
+
})
|
|
195
192
|
})
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
193
|
+
]
|
|
194
|
+
})
|
|
195
|
+
}),
|
|
196
|
+
/*#__PURE__*/ jsx(TableBody, {
|
|
197
|
+
sortedRoles: sortedRoles,
|
|
198
|
+
canDelete: canDelete,
|
|
199
|
+
canUpdate: canUpdate,
|
|
200
|
+
permissions: PERMISSIONS,
|
|
201
|
+
setRoleToDelete: setRoleToDelete,
|
|
202
|
+
onDelete: [
|
|
203
|
+
showConfirmDelete,
|
|
204
|
+
setShowConfirmDelete
|
|
208
205
|
]
|
|
209
|
-
}) : /*#__PURE__*/ jsx(EmptyStateLayout, {
|
|
210
|
-
content: formatMessage(emptyLayout[emptyContent])
|
|
211
206
|
})
|
|
212
207
|
]
|
|
213
|
-
}),
|
|
214
|
-
|
|
215
|
-
open: showConfirmDelete,
|
|
216
|
-
onOpenChange: handleShowConfirmDelete,
|
|
217
|
-
children: /*#__PURE__*/ jsx(ConfirmDialog, {
|
|
218
|
-
onConfirm: handleConfirmDelete
|
|
219
|
-
})
|
|
208
|
+
}) : /*#__PURE__*/ jsx(EmptyStateLayout, {
|
|
209
|
+
content: formatMessage(emptyLayout[emptyContent])
|
|
220
210
|
})
|
|
221
211
|
]
|
|
212
|
+
}),
|
|
213
|
+
/*#__PURE__*/ jsx(Dialog.Root, {
|
|
214
|
+
open: showConfirmDelete,
|
|
215
|
+
onOpenChange: handleShowConfirmDelete,
|
|
216
|
+
children: /*#__PURE__*/ jsx(ConfirmDialog, {
|
|
217
|
+
onConfirm: handleConfirmDelete
|
|
218
|
+
})
|
|
222
219
|
})
|
|
223
220
|
]
|
|
224
221
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../../../../admin/src/pages/Roles/pages/ListPage/index.jsx"],"sourcesContent":["import React, { useState } from 'react';\n\nimport {\n Table,\n Th,\n Thead,\n Tr,\n Typography,\n useNotifyAT,\n VisuallyHidden,\n EmptyStateLayout,\n useCollator,\n useFilter,\n LinkButton,\n Dialog,\n} from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport {\n ConfirmDialog,\n useTracking,\n Page,\n SearchInput,\n useNotification,\n useQueryParams,\n useFetchClient,\n useRBAC,\n Layouts,\n} from '@strapi/strapi/admin';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery } from 'react-query';\nimport { NavLink } from 'react-router-dom';\n\nimport { PERMISSIONS } from '../../../../constants';\nimport { getTrad } from '../../../../utils';\n\nimport TableBody from './components/TableBody';\n\nexport const RolesListPage = () => {\n const { trackUsage } = useTracking();\n const { formatMessage, locale } = useIntl();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const [{ query }] = useQueryParams();\n const _q = query?._q || '';\n const [showConfirmDelete, setShowConfirmDelete] = useState(false);\n const [roleToDelete, setRoleToDelete] = useState();\n const { del, get } = useFetchClient();\n\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canRead, canDelete, canCreate, canUpdate },\n } = useRBAC({\n create: PERMISSIONS.createRole,\n read: PERMISSIONS.readRoles,\n update: PERMISSIONS.updateRole,\n delete: PERMISSIONS.deleteRole,\n });\n\n const {\n isLoading: isLoadingForData,\n data: { roles },\n isFetching,\n refetch,\n } = useQuery('get-roles', () => fetchData(toggleNotification, formatMessage, notifyStatus), {\n initialData: {},\n enabled: canRead,\n });\n\n const { contains } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n /**\n * @type {Intl.Collator}\n */\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const isLoading = isLoadingForData || isFetching || isLoadingForPermissions;\n\n const handleShowConfirmDelete = () => {\n setShowConfirmDelete(!showConfirmDelete);\n };\n\n const deleteData = async (id, formatMessage, toggleNotification) => {\n try {\n await del(`/users-permissions/roles/${id}`);\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n };\n\n const fetchData = async (toggleNotification, formatMessage, notifyStatus) => {\n try {\n const { data } = await get('/users-permissions/roles');\n notifyStatus('The roles have loaded successfully');\n\n return data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n\n throw new Error(err);\n }\n };\n\n const emptyLayout = {\n roles: {\n id: getTrad('Roles.empty'),\n defaultMessage: \"You don't have any roles yet.\",\n },\n search: {\n id: getTrad('Roles.empty.search'),\n defaultMessage: 'No roles match the search.',\n },\n };\n\n const pageTitle = formatMessage({\n id: 'global.roles',\n defaultMessage: 'Roles',\n });\n\n const deleteMutation = useMutation((id) => deleteData(id, formatMessage, toggleNotification), {\n async onSuccess() {\n await refetch();\n },\n });\n\n const handleConfirmDelete = async () => {\n await deleteMutation.mutateAsync(roleToDelete);\n setShowConfirmDelete(!showConfirmDelete);\n };\n\n const sortedRoles = (roles || [])\n .filter((role) => contains(role.name, _q) || contains(role.description, _q))\n .sort(\n (a, b) => formatter.compare(a.name, b.name) || formatter.compare(a.description, b.description)\n );\n\n const emptyContent = _q && !sortedRoles.length ? 'search' : 'roles';\n\n const colCount = 4;\n const rowCount = (roles?.length || 0) + 1;\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Layouts.Root>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n { name: pageTitle }\n )}\n </Page.Title>\n <Page.Main>\n <Layouts.Header\n title={formatMessage({\n id: 'global.roles',\n defaultMessage: 'Roles',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.list.description',\n defaultMessage: 'List of roles',\n })}\n primaryAction={\n canCreate ? (\n <LinkButton\n to=\"new\"\n tag={NavLink}\n onClick={() => trackUsage('willCreateRole')}\n startIcon={<Plus />}\n size=\"S\"\n >\n {formatMessage({\n id: getTrad('List.button.roles'),\n defaultMessage: 'Add new role',\n })}\n </LinkButton>\n ) : null\n }\n />\n\n <Layouts.Action\n startActions={\n <SearchInput\n label={formatMessage({\n id: 'app.component.search.label',\n defaultMessage: 'Search',\n })}\n />\n }\n />\n\n <Layouts.Content>\n {!canRead && <Page.NoPermissions />}\n {canRead && sortedRoles && sortedRoles?.length ? (\n <Table colCount={colCount} rowCount={rowCount}>\n <Thead>\n <Tr>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({ id: 'global.name', defaultMessage: 'Name' })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'global.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <TableBody\n sortedRoles={sortedRoles}\n canDelete={canDelete}\n canUpdate={canUpdate}\n permissions={PERMISSIONS}\n setRoleToDelete={setRoleToDelete}\n onDelete={[showConfirmDelete, setShowConfirmDelete]}\n />\n </Table>\n ) : (\n <EmptyStateLayout content={formatMessage(emptyLayout[emptyContent])} />\n )}\n </Layouts.Content>\n <Dialog.Root open={showConfirmDelete} onOpenChange={handleShowConfirmDelete}>\n <ConfirmDialog onConfirm={handleConfirmDelete} />\n </Dialog.Root>\n </Page.Main>\n </Layouts.Root>\n );\n};\n\nexport const ProtectedRolesListPage = () => {\n return (\n <Page.Protect permissions={PERMISSIONS.accessRoles}>\n <RolesListPage />\n </Page.Protect>\n );\n};\n"],"names":["RolesListPage","trackUsage","useTracking","formatMessage","locale","useIntl","toggleNotification","useNotification","notifyStatus","useNotifyAT","query","useQueryParams","_q","showConfirmDelete","setShowConfirmDelete","useState","roleToDelete","setRoleToDelete","del","get","useFetchClient","isLoading","isLoadingForPermissions","allowedActions","canRead","canDelete","canCreate","canUpdate","useRBAC","create","PERMISSIONS","createRole","read","readRoles","update","updateRole","delete","deleteRole","isLoadingForData","data","roles","isFetching","refetch","useQuery","fetchData","initialData","enabled","contains","useFilter","sensitivity","formatter","useCollator","handleShowConfirmDelete","deleteData","id","error","type","message","defaultMessage","err","Error","emptyLayout","getTrad","search","pageTitle","deleteMutation","useMutation","onSuccess","handleConfirmDelete","mutateAsync","sortedRoles","filter","role","name","description","sort","a","b","compare","emptyContent","length","colCount","rowCount","_jsx","Page","Loading","_jsxs","Layouts","Root","Title","Main","Header","title","subtitle","primaryAction","LinkButton","to","tag","NavLink","onClick","startIcon","Plus","size","Action","startActions","SearchInput","label","Content","NoPermissions","Table","Thead","Tr","Th","Typography","variant","textColor","VisuallyHidden","TableBody","permissions","onDelete","EmptyStateLayout","content","Dialog","open","onOpenChange","ConfirmDialog","onConfirm","ProtectedRolesListPage","Protect","accessRoles"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../../admin/src/pages/Roles/pages/ListPage/index.jsx"],"sourcesContent":["import React, { useState } from 'react';\n\nimport {\n Table,\n Th,\n Thead,\n Tr,\n Typography,\n useNotifyAT,\n VisuallyHidden,\n EmptyStateLayout,\n useCollator,\n useFilter,\n LinkButton,\n Dialog,\n} from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport {\n ConfirmDialog,\n useTracking,\n Page,\n SearchInput,\n useNotification,\n useQueryParams,\n useFetchClient,\n useRBAC,\n Layouts,\n} from '@strapi/strapi/admin';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery } from 'react-query';\nimport { NavLink } from 'react-router-dom';\n\nimport { PERMISSIONS } from '../../../../constants';\nimport { getTrad } from '../../../../utils';\n\nimport TableBody from './components/TableBody';\n\nexport const RolesListPage = () => {\n const { trackUsage } = useTracking();\n const { formatMessage, locale } = useIntl();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const [{ query }] = useQueryParams();\n const _q = query?._q || '';\n const [showConfirmDelete, setShowConfirmDelete] = useState(false);\n const [roleToDelete, setRoleToDelete] = useState();\n const { del, get } = useFetchClient();\n\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canRead, canDelete, canCreate, canUpdate },\n } = useRBAC({\n create: PERMISSIONS.createRole,\n read: PERMISSIONS.readRoles,\n update: PERMISSIONS.updateRole,\n delete: PERMISSIONS.deleteRole,\n });\n\n const {\n isLoading: isLoadingForData,\n data: { roles },\n isFetching,\n refetch,\n } = useQuery('get-roles', () => fetchData(toggleNotification, formatMessage, notifyStatus), {\n initialData: {},\n enabled: canRead,\n });\n\n const { contains } = useFilter(locale, {\n sensitivity: 'base',\n });\n\n /**\n * @type {Intl.Collator}\n */\n const formatter = useCollator(locale, {\n sensitivity: 'base',\n });\n\n const isLoading = isLoadingForData || isFetching || isLoadingForPermissions;\n\n const handleShowConfirmDelete = () => {\n setShowConfirmDelete(!showConfirmDelete);\n };\n\n const deleteData = async (id, formatMessage, toggleNotification) => {\n try {\n await del(`/users-permissions/roles/${id}`);\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n };\n\n const fetchData = async (toggleNotification, formatMessage, notifyStatus) => {\n try {\n const { data } = await get('/users-permissions/roles');\n notifyStatus('The roles have loaded successfully');\n\n return data;\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\n\n throw new Error(err);\n }\n };\n\n const emptyLayout = {\n roles: {\n id: getTrad('Roles.empty'),\n defaultMessage: \"You don't have any roles yet.\",\n },\n search: {\n id: getTrad('Roles.empty.search'),\n defaultMessage: 'No roles match the search.',\n },\n };\n\n const pageTitle = formatMessage({\n id: 'global.roles',\n defaultMessage: 'Roles',\n });\n\n const deleteMutation = useMutation((id) => deleteData(id, formatMessage, toggleNotification), {\n async onSuccess() {\n await refetch();\n },\n });\n\n const handleConfirmDelete = async () => {\n await deleteMutation.mutateAsync(roleToDelete);\n setShowConfirmDelete(!showConfirmDelete);\n };\n\n const sortedRoles = (roles || [])\n .filter((role) => contains(role.name, _q) || contains(role.description, _q))\n .sort(\n (a, b) => formatter.compare(a.name, b.name) || formatter.compare(a.description, b.description)\n );\n\n const emptyContent = _q && !sortedRoles.length ? 'search' : 'roles';\n\n const colCount = 4;\n const rowCount = (roles?.length || 0) + 1;\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n { name: pageTitle }\n )}\n </Page.Title>\n <Layouts.Header\n title={formatMessage({\n id: 'global.roles',\n defaultMessage: 'Roles',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.list.description',\n defaultMessage: 'List of roles',\n })}\n primaryAction={\n canCreate ? (\n <LinkButton\n to=\"new\"\n tag={NavLink}\n onClick={() => trackUsage('willCreateRole')}\n startIcon={<Plus />}\n size=\"S\"\n fullWidth\n >\n {formatMessage({\n id: getTrad('List.button.roles'),\n defaultMessage: 'Add new role',\n })}\n </LinkButton>\n ) : null\n }\n />\n\n <Layouts.Action\n startActions={\n <SearchInput\n label={formatMessage({\n id: 'app.component.search.label',\n defaultMessage: 'Search',\n })}\n />\n }\n />\n\n <Layouts.Content>\n {!canRead && <Page.NoPermissions />}\n {canRead && sortedRoles && sortedRoles?.length ? (\n <Table colCount={colCount} rowCount={rowCount}>\n <Thead>\n <Tr>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({ id: 'global.name', defaultMessage: 'Name' })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'global.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <TableBody\n sortedRoles={sortedRoles}\n canDelete={canDelete}\n canUpdate={canUpdate}\n permissions={PERMISSIONS}\n setRoleToDelete={setRoleToDelete}\n onDelete={[showConfirmDelete, setShowConfirmDelete]}\n />\n </Table>\n ) : (\n <EmptyStateLayout content={formatMessage(emptyLayout[emptyContent])} />\n )}\n </Layouts.Content>\n <Dialog.Root open={showConfirmDelete} onOpenChange={handleShowConfirmDelete}>\n <ConfirmDialog onConfirm={handleConfirmDelete} />\n </Dialog.Root>\n </Page.Main>\n );\n};\n\nexport const ProtectedRolesListPage = () => {\n return (\n <Page.Protect permissions={PERMISSIONS.accessRoles}>\n <RolesListPage />\n </Page.Protect>\n );\n};\n"],"names":["RolesListPage","trackUsage","useTracking","formatMessage","locale","useIntl","toggleNotification","useNotification","notifyStatus","useNotifyAT","query","useQueryParams","_q","showConfirmDelete","setShowConfirmDelete","useState","roleToDelete","setRoleToDelete","del","get","useFetchClient","isLoading","isLoadingForPermissions","allowedActions","canRead","canDelete","canCreate","canUpdate","useRBAC","create","PERMISSIONS","createRole","read","readRoles","update","updateRole","delete","deleteRole","isLoadingForData","data","roles","isFetching","refetch","useQuery","fetchData","initialData","enabled","contains","useFilter","sensitivity","formatter","useCollator","handleShowConfirmDelete","deleteData","id","error","type","message","defaultMessage","err","Error","emptyLayout","getTrad","search","pageTitle","deleteMutation","useMutation","onSuccess","handleConfirmDelete","mutateAsync","sortedRoles","filter","role","name","description","sort","a","b","compare","emptyContent","length","colCount","rowCount","_jsx","Page","Loading","_jsxs","Main","Title","Layouts","Header","title","subtitle","primaryAction","LinkButton","to","tag","NavLink","onClick","startIcon","Plus","size","fullWidth","Action","startActions","SearchInput","label","Content","NoPermissions","Table","Thead","Tr","Th","Typography","variant","textColor","VisuallyHidden","TableBody","permissions","onDelete","EmptyStateLayout","content","Dialog","Root","open","onOpenChange","ConfirmDialog","onConfirm","ProtectedRolesListPage","Protect","accessRoles"],"mappings":"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"}
|
|
@@ -6,15 +6,25 @@ var de = {
|
|
|
6
6
|
"EditForm.inputSelect.label.role": "Standardrolle für authentifizierte Benutzer",
|
|
7
7
|
"EditForm.inputToggle.description.email": "Verbiete das Anlegen verschiedener Accounts mit der gleichen E-Mail-Adresse bei unterschiedlichen Anmeldemethoden.",
|
|
8
8
|
"EditForm.inputToggle.description.email-confirmation": "Wenn aktiviert (ON) erhalten neu registrierte Benutzer eine Bestätigungs-E-Mail.",
|
|
9
|
-
"EditForm.inputToggle.description.email-confirmation-redirection": "
|
|
10
|
-
"EditForm.inputToggle.description.email-reset-password": "URL deiner Passwort-Zurücksetzen-Seite
|
|
9
|
+
"EditForm.inputToggle.description.email-confirmation-redirection": "Wähle wohin weitergeleitet wird, wenn die die E-Mail bestätigt wurde.",
|
|
10
|
+
"EditForm.inputToggle.description.email-reset-password": "URL deiner Passwort-Zurücksetzen-Seite",
|
|
11
11
|
"EditForm.inputToggle.description.sign-up": "Wenn deaktiviert (OFF), wird der Registrationsprozess unterbunden. Niemand kann sich mehr registrieren.",
|
|
12
12
|
"EditForm.inputToggle.label.email": "Ein Account pro E-Mail-Adresse",
|
|
13
13
|
"EditForm.inputToggle.label.email-confirmation": "Aktiviere E-Mail Benachrichtigungen",
|
|
14
14
|
"EditForm.inputToggle.label.email-confirmation-redirection": "Weiterleitungs-URL",
|
|
15
15
|
"EditForm.inputToggle.label.email-reset-password": "Passwort-Zurücksetzen-Seite",
|
|
16
16
|
"EditForm.inputToggle.label.sign-up": "Registration ermöglichen",
|
|
17
|
+
"EditForm.inputToggle.placeholder.email-confirmation-redirection": "z.B.: https://example.com/email-bestaetigung-weiterleitung",
|
|
18
|
+
"EditForm.inputToggle.placeholder.email-reset-password": "z.B.: https://example.com/passwort-zuruecksetzen",
|
|
19
|
+
"EditPage.form.roles": "Rollen-Details",
|
|
20
|
+
"Email.template.data.loaded": "E-Mail-Vorlagen wurden geladen",
|
|
17
21
|
"Email.template.email_confirmation": "Bestätigung der E-Mail-Addresse",
|
|
22
|
+
"Email.template.reset_password": "Passwort zurücksetzen",
|
|
23
|
+
"Email.template.form.edit.label": "Vorlage bearbeiten",
|
|
24
|
+
"Email.template.table.action.label": "Aktion",
|
|
25
|
+
"Email.template.table.icon.label": "Icon",
|
|
26
|
+
"Email.template.table.name.label": "Name",
|
|
27
|
+
"Form.advancedSettings.data.loaded": "Erweiterte Einstellungsdaten wurden geladen",
|
|
18
28
|
"HeaderNav.link.advancedSettings": "Erweiterte Einstellungen",
|
|
19
29
|
"HeaderNav.link.emailTemplates": "E-Mail-Templates",
|
|
20
30
|
"HeaderNav.link.providers": "Methoden",
|
|
@@ -46,10 +56,25 @@ var de = {
|
|
|
46
56
|
"PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com",
|
|
47
57
|
"PopUpForm.header.edit.email-templates": "E-Mail-Templates bearbeiten",
|
|
48
58
|
"PopUpForm.header.edit.providers": "Anbieter bearbeiten",
|
|
59
|
+
"Providers.data.loaded": "Anbieter wurden geladen",
|
|
60
|
+
"Providers.status": "Status",
|
|
61
|
+
"Roles.empty": "Du hast noch keine Rollen.",
|
|
62
|
+
"Roles.empty.search": "Keine Rollen entsprechen der Suche.",
|
|
49
63
|
"Settings.roles.deleted": "Rolle gelöscht",
|
|
50
64
|
"Settings.roles.edited": "Rolle bearbeitet",
|
|
51
65
|
"Settings.section-label": "Nutzer- & Berechtigungen-Plugin",
|
|
66
|
+
"components.Input.error.validation.email": "Das ist keine gültige E-Mail-Adresse",
|
|
67
|
+
"components.Input.error.validation.json": "Das entspricht nicht dem JSON-Format",
|
|
68
|
+
"components.Input.error.validation.max": "Der Wert ist zu hoch.",
|
|
69
|
+
"components.Input.error.validation.maxLength": "Der Wert ist zu lang.",
|
|
70
|
+
"components.Input.error.validation.min": "Der Wert ist zu niedrig.",
|
|
71
|
+
"components.Input.error.validation.minLength": "Der Wert ist zu kurz.",
|
|
72
|
+
"components.Input.error.validation.minSupMax": "Kann nicht größer sein",
|
|
73
|
+
"components.Input.error.validation.regex": "Der Wert entspricht nicht dem regulären Ausdruck.",
|
|
74
|
+
"components.Input.error.validation.required": "Dieser Wert ist erforderlich.",
|
|
75
|
+
"components.Input.error.validation.unique": "Dieser Wert wird bereits verwendet.",
|
|
52
76
|
"notification.success.submit": "Einstellungen aktualisiert",
|
|
77
|
+
"page.title": "Einstellungen - Rollen",
|
|
53
78
|
"plugin.description.long": "Beschütze deine API mit einem vollständigen Authentifikationsprozess basierend auf JWT. Zudem bietet dieses Plugin eine ACL-Strategie, die erlaubt, die Berechtigungen für Benutzergruppen festzulegen.",
|
|
54
79
|
"plugin.description.short": "Beschütze deine API mit einem vollständigen Authentifikationsprozess basierend auf JWT.",
|
|
55
80
|
"plugin.name": "Nutzer- & Berechtigungen-Plugin",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"de.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"de.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -4,15 +4,25 @@ var de = {
|
|
|
4
4
|
"EditForm.inputSelect.label.role": "Standardrolle für authentifizierte Benutzer",
|
|
5
5
|
"EditForm.inputToggle.description.email": "Verbiete das Anlegen verschiedener Accounts mit der gleichen E-Mail-Adresse bei unterschiedlichen Anmeldemethoden.",
|
|
6
6
|
"EditForm.inputToggle.description.email-confirmation": "Wenn aktiviert (ON) erhalten neu registrierte Benutzer eine Bestätigungs-E-Mail.",
|
|
7
|
-
"EditForm.inputToggle.description.email-confirmation-redirection": "
|
|
8
|
-
"EditForm.inputToggle.description.email-reset-password": "URL deiner Passwort-Zurücksetzen-Seite
|
|
7
|
+
"EditForm.inputToggle.description.email-confirmation-redirection": "Wähle wohin weitergeleitet wird, wenn die die E-Mail bestätigt wurde.",
|
|
8
|
+
"EditForm.inputToggle.description.email-reset-password": "URL deiner Passwort-Zurücksetzen-Seite",
|
|
9
9
|
"EditForm.inputToggle.description.sign-up": "Wenn deaktiviert (OFF), wird der Registrationsprozess unterbunden. Niemand kann sich mehr registrieren.",
|
|
10
10
|
"EditForm.inputToggle.label.email": "Ein Account pro E-Mail-Adresse",
|
|
11
11
|
"EditForm.inputToggle.label.email-confirmation": "Aktiviere E-Mail Benachrichtigungen",
|
|
12
12
|
"EditForm.inputToggle.label.email-confirmation-redirection": "Weiterleitungs-URL",
|
|
13
13
|
"EditForm.inputToggle.label.email-reset-password": "Passwort-Zurücksetzen-Seite",
|
|
14
14
|
"EditForm.inputToggle.label.sign-up": "Registration ermöglichen",
|
|
15
|
+
"EditForm.inputToggle.placeholder.email-confirmation-redirection": "z.B.: https://example.com/email-bestaetigung-weiterleitung",
|
|
16
|
+
"EditForm.inputToggle.placeholder.email-reset-password": "z.B.: https://example.com/passwort-zuruecksetzen",
|
|
17
|
+
"EditPage.form.roles": "Rollen-Details",
|
|
18
|
+
"Email.template.data.loaded": "E-Mail-Vorlagen wurden geladen",
|
|
15
19
|
"Email.template.email_confirmation": "Bestätigung der E-Mail-Addresse",
|
|
20
|
+
"Email.template.reset_password": "Passwort zurücksetzen",
|
|
21
|
+
"Email.template.form.edit.label": "Vorlage bearbeiten",
|
|
22
|
+
"Email.template.table.action.label": "Aktion",
|
|
23
|
+
"Email.template.table.icon.label": "Icon",
|
|
24
|
+
"Email.template.table.name.label": "Name",
|
|
25
|
+
"Form.advancedSettings.data.loaded": "Erweiterte Einstellungsdaten wurden geladen",
|
|
16
26
|
"HeaderNav.link.advancedSettings": "Erweiterte Einstellungen",
|
|
17
27
|
"HeaderNav.link.emailTemplates": "E-Mail-Templates",
|
|
18
28
|
"HeaderNav.link.providers": "Methoden",
|
|
@@ -44,10 +54,25 @@ var de = {
|
|
|
44
54
|
"PopUpForm.Providers.subdomain.placeholder": "my.subdomain.com",
|
|
45
55
|
"PopUpForm.header.edit.email-templates": "E-Mail-Templates bearbeiten",
|
|
46
56
|
"PopUpForm.header.edit.providers": "Anbieter bearbeiten",
|
|
57
|
+
"Providers.data.loaded": "Anbieter wurden geladen",
|
|
58
|
+
"Providers.status": "Status",
|
|
59
|
+
"Roles.empty": "Du hast noch keine Rollen.",
|
|
60
|
+
"Roles.empty.search": "Keine Rollen entsprechen der Suche.",
|
|
47
61
|
"Settings.roles.deleted": "Rolle gelöscht",
|
|
48
62
|
"Settings.roles.edited": "Rolle bearbeitet",
|
|
49
63
|
"Settings.section-label": "Nutzer- & Berechtigungen-Plugin",
|
|
64
|
+
"components.Input.error.validation.email": "Das ist keine gültige E-Mail-Adresse",
|
|
65
|
+
"components.Input.error.validation.json": "Das entspricht nicht dem JSON-Format",
|
|
66
|
+
"components.Input.error.validation.max": "Der Wert ist zu hoch.",
|
|
67
|
+
"components.Input.error.validation.maxLength": "Der Wert ist zu lang.",
|
|
68
|
+
"components.Input.error.validation.min": "Der Wert ist zu niedrig.",
|
|
69
|
+
"components.Input.error.validation.minLength": "Der Wert ist zu kurz.",
|
|
70
|
+
"components.Input.error.validation.minSupMax": "Kann nicht größer sein",
|
|
71
|
+
"components.Input.error.validation.regex": "Der Wert entspricht nicht dem regulären Ausdruck.",
|
|
72
|
+
"components.Input.error.validation.required": "Dieser Wert ist erforderlich.",
|
|
73
|
+
"components.Input.error.validation.unique": "Dieser Wert wird bereits verwendet.",
|
|
50
74
|
"notification.success.submit": "Einstellungen aktualisiert",
|
|
75
|
+
"page.title": "Einstellungen - Rollen",
|
|
51
76
|
"plugin.description.long": "Beschütze deine API mit einem vollständigen Authentifikationsprozess basierend auf JWT. Zudem bietet dieses Plugin eine ACL-Strategie, die erlaubt, die Berechtigungen für Benutzergruppen festzulegen.",
|
|
52
77
|
"plugin.description.short": "Beschütze deine API mit einem vollständigen Authentifikationsprozess basierend auf JWT.",
|
|
53
78
|
"plugin.name": "Nutzer- & Berechtigungen-Plugin",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"de.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"de.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -19,6 +19,7 @@ var en = {
|
|
|
19
19
|
"EditPage.form.roles": "Role details",
|
|
20
20
|
"Email.template.data.loaded": "Email templates has been loaded",
|
|
21
21
|
"Email.template.email_confirmation": "Email address confirmation",
|
|
22
|
+
"Email.template.reset_password": "Reset password",
|
|
22
23
|
"Email.template.form.edit.label": "Edit a template",
|
|
23
24
|
"Email.template.table.action.label": "action",
|
|
24
25
|
"Email.template.table.icon.label": "icon",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"en.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -17,6 +17,7 @@ var en = {
|
|
|
17
17
|
"EditPage.form.roles": "Role details",
|
|
18
18
|
"Email.template.data.loaded": "Email templates has been loaded",
|
|
19
19
|
"Email.template.email_confirmation": "Email address confirmation",
|
|
20
|
+
"Email.template.reset_password": "Reset password",
|
|
20
21
|
"Email.template.form.edit.label": "Edit a template",
|
|
21
22
|
"Email.template.table.action.label": "action",
|
|
22
23
|
"Email.template.table.icon.label": "icon",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"en.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getTrad.js","sources":["../../../admin/src/utils/getTrad.js"],"sourcesContent":["import pluginId from '../pluginId';\n\nconst getTrad = (id) => `${pluginId}.${id}`;\n\nexport default getTrad;\n"],"names":["getTrad","id","pluginId"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"getTrad.js","sources":["../../../admin/src/utils/getTrad.js"],"sourcesContent":["import pluginId from '../pluginId';\n\nconst getTrad = (id) => `${pluginId}.${id}`;\n\nexport default getTrad;\n"],"names":["getTrad","id","pluginId"],"mappings":";;;;AAEA,MAAMA,UAAU,CAACC,EAAAA,GAAO,GAAGC,QAAS,CAAA,CAAC,EAAED,EAAI,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getTrad.mjs","sources":["../../../admin/src/utils/getTrad.js"],"sourcesContent":["import pluginId from '../pluginId';\n\nconst getTrad = (id) => `${pluginId}.${id}`;\n\nexport default getTrad;\n"],"names":["getTrad","id","pluginId"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"getTrad.mjs","sources":["../../../admin/src/utils/getTrad.js"],"sourcesContent":["import pluginId from '../pluginId';\n\nconst getTrad = (id) => `${pluginId}.${id}`;\n\nexport default getTrad;\n"],"names":["getTrad","id","pluginId"],"mappings":";;AAEA,MAAMA,UAAU,CAACC,EAAAA,GAAO,GAAGC,QAAS,CAAA,CAAC,EAAED,EAAI,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefixPluginTranslations.js","sources":["../../../admin/src/utils/prefixPluginTranslations.js"],"sourcesContent":["const prefixPluginTranslations = (trad, pluginId) => {\n if (!pluginId) {\n throw new TypeError(\"pluginId can't be empty\");\n }\n\n return Object.keys(trad).reduce((acc, current) => {\n acc[`${pluginId}.${current}`] = trad[current];\n\n return acc;\n }, {});\n};\n\nexport { prefixPluginTranslations };\n"],"names":["prefixPluginTranslations","trad","pluginId","Object","keys","reduce","acc","current"],"mappings":";;AAAMA,MAAAA,wBAAAA,GAA2B,CAACC,IAAMC,EAAAA,QAAAA,GAAAA;AAKtC,IAAA,OAAOC,OAAOC,IAAI,CAACH,MAAMI,MAAM,CAAC,CAACC,GAAKC,EAAAA,OAAAA,GAAAA;
|
|
1
|
+
{"version":3,"file":"prefixPluginTranslations.js","sources":["../../../admin/src/utils/prefixPluginTranslations.js"],"sourcesContent":["const prefixPluginTranslations = (trad, pluginId) => {\n if (!pluginId) {\n throw new TypeError(\"pluginId can't be empty\");\n }\n\n return Object.keys(trad).reduce((acc, current) => {\n acc[`${pluginId}.${current}`] = trad[current];\n\n return acc;\n }, {});\n};\n\nexport { prefixPluginTranslations };\n"],"names":["prefixPluginTranslations","trad","pluginId","Object","keys","reduce","acc","current"],"mappings":";;AAAMA,MAAAA,wBAAAA,GAA2B,CAACC,IAAMC,EAAAA,QAAAA,GAAAA;AAKtC,IAAA,OAAOC,OAAOC,IAAI,CAACH,MAAMI,MAAM,CAAC,CAACC,GAAKC,EAAAA,OAAAA,GAAAA;QACpCD,GAAG,CAAC,CAAGJ,EAAAA,QAAAA,CAAS,CAAC,EAAEK,SAAS,CAAC,GAAGN,IAAI,CAACM,OAAQ,CAAA;QAE7C,OAAOD,GAAAA;AACT,KAAA,EAAG,EAAC,CAAA;AACN;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prefixPluginTranslations.mjs","sources":["../../../admin/src/utils/prefixPluginTranslations.js"],"sourcesContent":["const prefixPluginTranslations = (trad, pluginId) => {\n if (!pluginId) {\n throw new TypeError(\"pluginId can't be empty\");\n }\n\n return Object.keys(trad).reduce((acc, current) => {\n acc[`${pluginId}.${current}`] = trad[current];\n\n return acc;\n }, {});\n};\n\nexport { prefixPluginTranslations };\n"],"names":["prefixPluginTranslations","trad","pluginId","Object","keys","reduce","acc","current"],"mappings":"AAAMA,MAAAA,wBAAAA,GAA2B,CAACC,IAAMC,EAAAA,QAAAA,GAAAA;AAKtC,IAAA,OAAOC,OAAOC,IAAI,CAACH,MAAMI,MAAM,CAAC,CAACC,GAAKC,EAAAA,OAAAA,GAAAA;
|
|
1
|
+
{"version":3,"file":"prefixPluginTranslations.mjs","sources":["../../../admin/src/utils/prefixPluginTranslations.js"],"sourcesContent":["const prefixPluginTranslations = (trad, pluginId) => {\n if (!pluginId) {\n throw new TypeError(\"pluginId can't be empty\");\n }\n\n return Object.keys(trad).reduce((acc, current) => {\n acc[`${pluginId}.${current}`] = trad[current];\n\n return acc;\n }, {});\n};\n\nexport { prefixPluginTranslations };\n"],"names":["prefixPluginTranslations","trad","pluginId","Object","keys","reduce","acc","current"],"mappings":"AAAMA,MAAAA,wBAAAA,GAA2B,CAACC,IAAMC,EAAAA,QAAAA,GAAAA;AAKtC,IAAA,OAAOC,OAAOC,IAAI,CAACH,MAAMI,MAAM,CAAC,CAACC,GAAKC,EAAAA,OAAAA,GAAAA;QACpCD,GAAG,CAAC,CAAGJ,EAAAA,QAAAA,CAAS,CAAC,EAAEK,SAAS,CAAC,GAAGN,IAAI,CAACM,OAAQ,CAAA;QAE7C,OAAOD,GAAAA;AACT,KAAA,EAAG,EAAC,CAAA;AACN;;;;"}
|
|
@@ -4,6 +4,7 @@ var require$$0 = require('crypto');
|
|
|
4
4
|
var require$$0$1 = require('lodash');
|
|
5
5
|
var index = require('../utils/index.js');
|
|
6
6
|
var usersPermissionsActions = require('./users-permissions-actions.js');
|
|
7
|
+
var constants = require('../services/constants.js');
|
|
7
8
|
|
|
8
9
|
var bootstrap;
|
|
9
10
|
var hasRequiredBootstrap;
|
|
@@ -20,6 +21,11 @@ function requireBootstrap() {
|
|
|
20
21
|
const _ = require$$0$1;
|
|
21
22
|
const { getService } = index.__require();
|
|
22
23
|
const usersPermissionsActions$1 = usersPermissionsActions.__require();
|
|
24
|
+
const { DEFAULT_ACCESS_TOKEN_LIFESPAN, DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN, DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN, DEFAULT_MAX_SESSION_LIFESPAN, DEFAULT_IDLE_SESSION_LIFESPAN } = constants.__require();
|
|
25
|
+
const getSessionManager = ()=>{
|
|
26
|
+
const manager = strapi.sessionManager;
|
|
27
|
+
return manager ?? null;
|
|
28
|
+
};
|
|
23
29
|
const initGrant = async (pluginStore)=>{
|
|
24
30
|
const allProviders = getService('providers-registry').getAll();
|
|
25
31
|
const grantConfig = Object.entries(allProviders).reduce((acc, [name, provider])=>{
|
|
@@ -114,27 +120,42 @@ function requireBootstrap() {
|
|
|
114
120
|
});
|
|
115
121
|
}
|
|
116
122
|
};
|
|
117
|
-
bootstrap = async ({ strapi })=>{
|
|
118
|
-
const pluginStore =
|
|
123
|
+
bootstrap = async ({ strapi: strapi1 })=>{
|
|
124
|
+
const pluginStore = strapi1.store({
|
|
119
125
|
type: 'plugin',
|
|
120
126
|
name: 'users-permissions'
|
|
121
127
|
});
|
|
122
128
|
await initGrant(pluginStore);
|
|
123
129
|
await initEmails(pluginStore);
|
|
124
130
|
await initAdvancedOptions(pluginStore);
|
|
125
|
-
await
|
|
131
|
+
await strapi1.service('admin::permission').actionProvider.registerMany(usersPermissionsActions$1.actions);
|
|
126
132
|
await getService('users-permissions').initialize();
|
|
127
|
-
|
|
133
|
+
// Define users-permissions origin configuration for sessionManager
|
|
134
|
+
const upConfig = strapi1.config.get('plugin::users-permissions');
|
|
135
|
+
const sessionManager = getSessionManager();
|
|
136
|
+
if (sessionManager) {
|
|
137
|
+
sessionManager.defineOrigin('users-permissions', {
|
|
138
|
+
jwtSecret: upConfig.jwtSecret || strapi1.config.get('admin.auth.secret'),
|
|
139
|
+
accessTokenLifespan: upConfig.sessions?.accessTokenLifespan || DEFAULT_ACCESS_TOKEN_LIFESPAN,
|
|
140
|
+
maxRefreshTokenLifespan: upConfig.sessions?.maxRefreshTokenLifespan || DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN,
|
|
141
|
+
idleRefreshTokenLifespan: upConfig.sessions?.idleRefreshTokenLifespan || DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN,
|
|
142
|
+
maxSessionLifespan: upConfig.sessions?.maxSessionLifespan || DEFAULT_MAX_SESSION_LIFESPAN,
|
|
143
|
+
idleSessionLifespan: upConfig.sessions?.idleSessionLifespan || DEFAULT_IDLE_SESSION_LIFESPAN,
|
|
144
|
+
algorithm: upConfig.jwt?.algorithm,
|
|
145
|
+
jwtOptions: upConfig.jwt || {}
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
if (!strapi1.config.get('plugin::users-permissions.jwtSecret')) {
|
|
128
149
|
if (process.env.NODE_ENV !== 'development') {
|
|
129
150
|
throw new Error(`Missing jwtSecret. Please, set configuration variable "jwtSecret" for the users-permissions plugin in config/plugins.js (ex: you can generate one using Node with \`crypto.randomBytes(16).toString('base64')\`).
|
|
130
151
|
For security reasons, prefer storing the secret in an environment variable and read it in config/plugins.js. See https://docs.strapi.io/developer-docs/latest/setup-deployment-guides/configurations/optional/environment.html#configuration-using-environment-variables.`);
|
|
131
152
|
}
|
|
132
153
|
const jwtSecret = crypto.randomBytes(16).toString('base64');
|
|
133
|
-
|
|
154
|
+
strapi1.config.set('plugin::users-permissions.jwtSecret', jwtSecret);
|
|
134
155
|
if (!process.env.JWT_SECRET) {
|
|
135
156
|
const envPath = process.env.ENV_PATH || '.env';
|
|
136
|
-
|
|
137
|
-
|
|
157
|
+
strapi1.fs.appendFile(envPath, `JWT_SECRET=${jwtSecret}\n`);
|
|
158
|
+
strapi1.log.info(`The Users & Permissions plugin automatically generated a jwt secret and stored it in ${envPath} under the name JWT_SECRET.`);
|
|
138
159
|
}
|
|
139
160
|
}
|
|
140
161
|
};
|