@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.
Files changed (149) hide show
  1. package/admin/src/components/Permissions/PermissionRow/SubCategory.jsx +8 -1
  2. package/admin/src/components/Policies/index.jsx +1 -0
  3. package/admin/src/components/UsersPermissions/index.jsx +1 -0
  4. package/admin/src/pages/AdvancedSettings/index.jsx +1 -0
  5. package/admin/src/pages/EmailTemplates/components/EmailForm.jsx +2 -1
  6. package/admin/src/pages/Providers/index.jsx +74 -76
  7. package/admin/src/pages/Roles/pages/CreatePage.jsx +26 -8
  8. package/admin/src/pages/Roles/pages/EditPage.jsx +13 -7
  9. package/admin/src/pages/Roles/pages/ListPage/index.jsx +92 -93
  10. package/admin/src/translations/de.json +27 -2
  11. package/admin/src/translations/en.json +1 -0
  12. package/dist/admin/components/FormModal/Input/index.js.map +1 -1
  13. package/dist/admin/components/FormModal/Input/index.mjs.map +1 -1
  14. package/dist/admin/components/Permissions/PermissionRow/SubCategory.js +3 -1
  15. package/dist/admin/components/Permissions/PermissionRow/SubCategory.js.map +1 -1
  16. package/dist/admin/components/Permissions/PermissionRow/SubCategory.mjs +3 -1
  17. package/dist/admin/components/Permissions/PermissionRow/SubCategory.mjs.map +1 -1
  18. package/dist/admin/components/Permissions/PermissionRow/index.js.map +1 -1
  19. package/dist/admin/components/Permissions/PermissionRow/index.mjs.map +1 -1
  20. package/dist/admin/components/Policies/index.js +1 -0
  21. package/dist/admin/components/Policies/index.js.map +1 -1
  22. package/dist/admin/components/Policies/index.mjs +1 -0
  23. package/dist/admin/components/Policies/index.mjs.map +1 -1
  24. package/dist/admin/components/UsersPermissions/index.js +1 -0
  25. package/dist/admin/components/UsersPermissions/index.js.map +1 -1
  26. package/dist/admin/components/UsersPermissions/index.mjs +1 -0
  27. package/dist/admin/components/UsersPermissions/index.mjs.map +1 -1
  28. package/dist/admin/pages/AdvancedSettings/index.js +1 -0
  29. package/dist/admin/pages/AdvancedSettings/index.js.map +1 -1
  30. package/dist/admin/pages/AdvancedSettings/index.mjs +1 -0
  31. package/dist/admin/pages/AdvancedSettings/index.mjs.map +1 -1
  32. package/dist/admin/pages/EmailTemplates/components/EmailForm.js +2 -1
  33. package/dist/admin/pages/EmailTemplates/components/EmailForm.js.map +1 -1
  34. package/dist/admin/pages/EmailTemplates/components/EmailForm.mjs +2 -1
  35. package/dist/admin/pages/EmailTemplates/components/EmailForm.mjs.map +1 -1
  36. package/dist/admin/pages/Providers/index.js +84 -88
  37. package/dist/admin/pages/Providers/index.js.map +1 -1
  38. package/dist/admin/pages/Providers/index.mjs +84 -88
  39. package/dist/admin/pages/Providers/index.mjs.map +1 -1
  40. package/dist/admin/pages/Roles/pages/CreatePage.js +15 -1
  41. package/dist/admin/pages/Roles/pages/CreatePage.js.map +1 -1
  42. package/dist/admin/pages/Roles/pages/CreatePage.mjs +17 -3
  43. package/dist/admin/pages/Roles/pages/CreatePage.mjs.map +1 -1
  44. package/dist/admin/pages/Roles/pages/EditPage.js +14 -3
  45. package/dist/admin/pages/Roles/pages/EditPage.js.map +1 -1
  46. package/dist/admin/pages/Roles/pages/EditPage.mjs +15 -4
  47. package/dist/admin/pages/Roles/pages/EditPage.mjs.map +1 -1
  48. package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.js.map +1 -1
  49. package/dist/admin/pages/Roles/pages/ListPage/components/TableBody.mjs.map +1 -1
  50. package/dist/admin/pages/Roles/pages/ListPage/index.js +96 -99
  51. package/dist/admin/pages/Roles/pages/ListPage/index.js.map +1 -1
  52. package/dist/admin/pages/Roles/pages/ListPage/index.mjs +96 -99
  53. package/dist/admin/pages/Roles/pages/ListPage/index.mjs.map +1 -1
  54. package/dist/admin/translations/de.json.js +27 -2
  55. package/dist/admin/translations/de.json.js.map +1 -1
  56. package/dist/admin/translations/de.json.mjs +27 -2
  57. package/dist/admin/translations/de.json.mjs.map +1 -1
  58. package/dist/admin/translations/en.json.js +1 -0
  59. package/dist/admin/translations/en.json.js.map +1 -1
  60. package/dist/admin/translations/en.json.mjs +1 -0
  61. package/dist/admin/translations/en.json.mjs.map +1 -1
  62. package/dist/admin/utils/getTrad.js.map +1 -1
  63. package/dist/admin/utils/getTrad.mjs.map +1 -1
  64. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -1
  65. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -1
  66. package/dist/server/bootstrap/index.js +28 -7
  67. package/dist/server/bootstrap/index.js.map +1 -1
  68. package/dist/server/bootstrap/index.mjs +28 -7
  69. package/dist/server/bootstrap/index.mjs.map +1 -1
  70. package/dist/server/config.js +16 -0
  71. package/dist/server/config.js.map +1 -1
  72. package/dist/server/config.mjs +16 -0
  73. package/dist/server/config.mjs.map +1 -1
  74. package/dist/server/controllers/auth.js +204 -3
  75. package/dist/server/controllers/auth.js.map +1 -1
  76. package/dist/server/controllers/auth.mjs +204 -3
  77. package/dist/server/controllers/auth.mjs.map +1 -1
  78. package/dist/server/controllers/content-manager-user.js +3 -3
  79. package/dist/server/controllers/content-manager-user.js.map +1 -1
  80. package/dist/server/controllers/content-manager-user.mjs +3 -3
  81. package/dist/server/controllers/content-manager-user.mjs.map +1 -1
  82. package/dist/server/controllers/validation/user.js +6 -1
  83. package/dist/server/controllers/validation/user.js.map +1 -1
  84. package/dist/server/controllers/validation/user.mjs +6 -1
  85. package/dist/server/controllers/validation/user.mjs.map +1 -1
  86. package/dist/server/graphql/resolvers-configs.js.map +1 -1
  87. package/dist/server/graphql/resolvers-configs.mjs.map +1 -1
  88. package/dist/server/middlewares/rateLimit.js.map +1 -1
  89. package/dist/server/middlewares/rateLimit.mjs.map +1 -1
  90. package/dist/server/routes/content-api/auth.js +155 -91
  91. package/dist/server/routes/content-api/auth.js.map +1 -1
  92. package/dist/server/routes/content-api/auth.mjs +155 -91
  93. package/dist/server/routes/content-api/auth.mjs.map +1 -1
  94. package/dist/server/routes/content-api/index.js +11 -9
  95. package/dist/server/routes/content-api/index.js.map +1 -1
  96. package/dist/server/routes/content-api/index.mjs +11 -9
  97. package/dist/server/routes/content-api/index.mjs.map +1 -1
  98. package/dist/server/routes/content-api/permissions.js +14 -7
  99. package/dist/server/routes/content-api/permissions.js.map +1 -1
  100. package/dist/server/routes/content-api/permissions.mjs +14 -7
  101. package/dist/server/routes/content-api/permissions.mjs.map +1 -1
  102. package/dist/server/routes/content-api/role.js +61 -27
  103. package/dist/server/routes/content-api/role.js.map +1 -1
  104. package/dist/server/routes/content-api/role.mjs +61 -27
  105. package/dist/server/routes/content-api/role.mjs.map +1 -1
  106. package/dist/server/routes/content-api/user.js +119 -57
  107. package/dist/server/routes/content-api/user.js.map +1 -1
  108. package/dist/server/routes/content-api/user.mjs +119 -57
  109. package/dist/server/routes/content-api/user.mjs.map +1 -1
  110. package/dist/server/routes/content-api/validation.js +217 -0
  111. package/dist/server/routes/content-api/validation.js.map +1 -0
  112. package/dist/server/routes/content-api/validation.mjs +215 -0
  113. package/dist/server/routes/content-api/validation.mjs.map +1 -0
  114. package/dist/server/services/constants.js +19 -0
  115. package/dist/server/services/constants.js.map +1 -0
  116. package/dist/server/services/constants.mjs +17 -0
  117. package/dist/server/services/constants.mjs.map +1 -0
  118. package/dist/server/services/jwt.js +45 -2
  119. package/dist/server/services/jwt.js.map +1 -1
  120. package/dist/server/services/jwt.mjs +45 -2
  121. package/dist/server/services/jwt.mjs.map +1 -1
  122. package/dist/server/services/providers-registry.js.map +1 -1
  123. package/dist/server/services/providers-registry.mjs.map +1 -1
  124. package/dist/server/services/role.js.map +1 -1
  125. package/dist/server/services/role.mjs.map +1 -1
  126. package/dist/server/services/user.js +29 -20
  127. package/dist/server/services/user.js.map +1 -1
  128. package/dist/server/services/user.mjs +29 -20
  129. package/dist/server/services/user.mjs.map +1 -1
  130. package/dist/server/services/users-permissions.js +12 -3
  131. package/dist/server/services/users-permissions.js.map +1 -1
  132. package/dist/server/services/users-permissions.mjs +12 -3
  133. package/dist/server/services/users-permissions.mjs.map +1 -1
  134. package/package.json +13 -12
  135. package/server/bootstrap/index.js +31 -0
  136. package/server/config.js +22 -0
  137. package/server/controllers/auth.js +246 -8
  138. package/server/controllers/content-manager-user.js +3 -4
  139. package/server/controllers/validation/user.js +12 -1
  140. package/server/routes/content-api/auth.js +119 -71
  141. package/server/routes/content-api/index.js +11 -4
  142. package/server/routes/content-api/permissions.js +14 -7
  143. package/server/routes/content-api/role.js +57 -27
  144. package/server/routes/content-api/user.js +108 -51
  145. package/server/routes/content-api/validation.js +250 -0
  146. package/server/services/constants.js +9 -0
  147. package/server/services/jwt.js +50 -2
  148. package/server/services/user.js +11 -0
  149. 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(Layouts.Root, {
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__*/ jsxs(Page.Main, {
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(Layouts.Header, {
118
- title: formatMessage({
119
- id: 'global.roles',
120
- defaultMessage: 'Roles'
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
- !canRead && /*#__PURE__*/ jsx(Page.NoPermissions, {}),
149
- canRead && sortedRoles && sortedRoles?.length ? /*#__PURE__*/ jsxs(Table, {
150
- colCount: colCount,
151
- rowCount: rowCount,
152
- children: [
153
- /*#__PURE__*/ jsx(Thead, {
154
- children: /*#__PURE__*/ jsxs(Tr, {
155
- children: [
156
- /*#__PURE__*/ jsx(Th, {
157
- children: /*#__PURE__*/ jsx(Typography, {
158
- variant: "sigma",
159
- textColor: "neutral600",
160
- children: formatMessage({
161
- id: 'global.name',
162
- defaultMessage: 'Name'
163
- })
164
- })
165
- }),
166
- /*#__PURE__*/ jsx(Th, {
167
- children: /*#__PURE__*/ jsx(Typography, {
168
- variant: "sigma",
169
- textColor: "neutral600",
170
- children: formatMessage({
171
- id: 'global.description',
172
- defaultMessage: 'Description'
173
- })
174
- })
175
- }),
176
- /*#__PURE__*/ jsx(Th, {
177
- children: /*#__PURE__*/ jsx(Typography, {
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
- /*#__PURE__*/ jsx(TableBody, {
198
- sortedRoles: sortedRoles,
199
- canDelete: canDelete,
200
- canUpdate: canUpdate,
201
- permissions: PERMISSIONS,
202
- setRoleToDelete: setRoleToDelete,
203
- onDelete: [
204
- showConfirmDelete,
205
- setShowConfirmDelete
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
- /*#__PURE__*/ jsx(Dialog.Root, {
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": "Nachdem Sie die E-Mail bestätigt haben, wähle wohin sie weitergeleitet wird.",
10
- "EditForm.inputToggle.description.email-reset-password": "URL deiner Passwort-Zurücksetzen-Seite deiner Anwendung",
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": "Nachdem Sie die E-Mail bestätigt haben, wähle wohin sie weitergeleitet wird.",
8
- "EditForm.inputToggle.description.email-reset-password": "URL deiner Passwort-Zurücksetzen-Seite deiner Anwendung",
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":";;;;AAEMA,MAAAA,OAAAA,GAAU,CAACC,EAAO,GAAA,CAAC,EAAEC,QAAS,CAAA,CAAC,EAAED,EAAAA,CAAG;;;;"}
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":";;AAEMA,MAAAA,OAAAA,GAAU,CAACC,EAAO,GAAA,CAAC,EAAEC,QAAS,CAAA,CAAC,EAAED,EAAAA,CAAG;;;;"}
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;AACpCD,QAAAA,GAAG,CAAC,CAAC,EAAEJ,QAAAA,CAAS,CAAC,EAAEK,OAAQ,CAAA,CAAC,CAAC,GAAGN,IAAI,CAACM,OAAQ,CAAA;QAE7C,OAAOD,GAAAA;AACT,KAAA,EAAG,EAAC,CAAA;AACN;;;;"}
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;AACpCD,QAAAA,GAAG,CAAC,CAAC,EAAEJ,QAAAA,CAAS,CAAC,EAAEK,OAAQ,CAAA,CAAC,CAAC,GAAGN,IAAI,CAACM,OAAQ,CAAA;QAE7C,OAAOD,GAAAA;AACT,KAAA,EAAG,EAAC,CAAA;AACN;;;;"}
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 = strapi.store({
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 strapi.service('admin::permission').actionProvider.registerMany(usersPermissionsActions$1.actions);
131
+ await strapi1.service('admin::permission').actionProvider.registerMany(usersPermissionsActions$1.actions);
126
132
  await getService('users-permissions').initialize();
127
- if (!strapi.config.get('plugin::users-permissions.jwtSecret')) {
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
- strapi.config.set('plugin::users-permissions.jwtSecret', jwtSecret);
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
- strapi.fs.appendFile(envPath, `JWT_SECRET=${jwtSecret}\n`);
137
- strapi.log.info(`The Users & Permissions plugin automatically generated a jwt secret and stored it in ${envPath} under the name JWT_SECRET.`);
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
  };