@strapi/plugin-users-permissions 0.0.0-next.d9724d67b33363354d7171a9f2265e1c42485e13 → 0.0.0-next.da19c0501ff87d14fb664b55b8e0630d3c548485

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 (66) hide show
  1. package/admin/src/pages/Providers/index.jsx +74 -76
  2. package/admin/src/pages/Roles/pages/CreatePage.jsx +4 -13
  3. package/admin/src/pages/Roles/pages/EditPage.jsx +4 -13
  4. package/admin/src/pages/Roles/pages/ListPage/index.jsx +91 -93
  5. package/admin/src/translations/en.json +1 -0
  6. package/dist/admin/pages/Providers/index.js +84 -88
  7. package/dist/admin/pages/Providers/index.js.map +1 -1
  8. package/dist/admin/pages/Providers/index.mjs +84 -88
  9. package/dist/admin/pages/Providers/index.mjs.map +1 -1
  10. package/dist/admin/pages/Roles/pages/CreatePage.js +2 -1
  11. package/dist/admin/pages/Roles/pages/CreatePage.js.map +1 -1
  12. package/dist/admin/pages/Roles/pages/CreatePage.mjs +3 -2
  13. package/dist/admin/pages/Roles/pages/CreatePage.mjs.map +1 -1
  14. package/dist/admin/pages/Roles/pages/EditPage.js +2 -1
  15. package/dist/admin/pages/Roles/pages/EditPage.js.map +1 -1
  16. package/dist/admin/pages/Roles/pages/EditPage.mjs +3 -2
  17. package/dist/admin/pages/Roles/pages/EditPage.mjs.map +1 -1
  18. package/dist/admin/pages/Roles/pages/ListPage/index.js +95 -99
  19. package/dist/admin/pages/Roles/pages/ListPage/index.js.map +1 -1
  20. package/dist/admin/pages/Roles/pages/ListPage/index.mjs +95 -99
  21. package/dist/admin/pages/Roles/pages/ListPage/index.mjs.map +1 -1
  22. package/dist/admin/translations/en.json.js +1 -0
  23. package/dist/admin/translations/en.json.js.map +1 -1
  24. package/dist/admin/translations/en.json.mjs +1 -0
  25. package/dist/admin/translations/en.json.mjs.map +1 -1
  26. package/dist/server/bootstrap/index.js +28 -7
  27. package/dist/server/bootstrap/index.js.map +1 -1
  28. package/dist/server/bootstrap/index.mjs +28 -7
  29. package/dist/server/bootstrap/index.mjs.map +1 -1
  30. package/dist/server/config.js +16 -0
  31. package/dist/server/config.js.map +1 -1
  32. package/dist/server/config.mjs +16 -0
  33. package/dist/server/config.mjs.map +1 -1
  34. package/dist/server/controllers/auth.js +204 -3
  35. package/dist/server/controllers/auth.js.map +1 -1
  36. package/dist/server/controllers/auth.mjs +204 -3
  37. package/dist/server/controllers/auth.mjs.map +1 -1
  38. package/dist/server/routes/content-api/auth.js +16 -0
  39. package/dist/server/routes/content-api/auth.js.map +1 -1
  40. package/dist/server/routes/content-api/auth.mjs +16 -0
  41. package/dist/server/routes/content-api/auth.mjs.map +1 -1
  42. package/dist/server/routes/content-api/validation.js +1 -0
  43. package/dist/server/routes/content-api/validation.js.map +1 -1
  44. package/dist/server/routes/content-api/validation.mjs +1 -0
  45. package/dist/server/routes/content-api/validation.mjs.map +1 -1
  46. package/dist/server/services/constants.js +19 -0
  47. package/dist/server/services/constants.js.map +1 -0
  48. package/dist/server/services/constants.mjs +17 -0
  49. package/dist/server/services/constants.mjs.map +1 -0
  50. package/dist/server/services/jwt.js +45 -2
  51. package/dist/server/services/jwt.js.map +1 -1
  52. package/dist/server/services/jwt.mjs +45 -2
  53. package/dist/server/services/jwt.mjs.map +1 -1
  54. package/dist/server/services/user.js +29 -20
  55. package/dist/server/services/user.js.map +1 -1
  56. package/dist/server/services/user.mjs +29 -20
  57. package/dist/server/services/user.mjs.map +1 -1
  58. package/package.json +5 -5
  59. package/server/bootstrap/index.js +31 -0
  60. package/server/config.js +22 -0
  61. package/server/controllers/auth.js +248 -8
  62. package/server/routes/content-api/auth.js +12 -0
  63. package/server/routes/content-api/validation.js +1 -0
  64. package/server/services/constants.js +9 -0
  65. package/server/services/jwt.js +50 -2
  66. package/server/services/user.js +11 -0
@@ -144,7 +144,7 @@ export const ProvidersPage = () => {
144
144
  }
145
145
 
146
146
  return (
147
- <Layouts.Root>
147
+ <Page.Main>
148
148
  <Page.Title>
149
149
  {formatMessage(
150
150
  { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },
@@ -156,83 +156,81 @@ export const ProvidersPage = () => {
156
156
  }
157
157
  )}
158
158
  </Page.Title>
159
- <Page.Main>
160
- <Layouts.Header
161
- title={formatMessage({
162
- id: getTrad('HeaderNav.link.providers'),
163
- defaultMessage: 'Providers',
164
- })}
165
- />
166
- <Layouts.Content>
167
- <Table colCount={3} rowCount={providers.length + 1}>
168
- <Thead>
169
- <Tr>
170
- <Th>
171
- <Typography variant="sigma" textColor="neutral600">
172
- {formatMessage({ id: 'global.name', defaultMessage: 'Name' })}
173
- </Typography>
174
- </Th>
175
- <Th>
176
- <Typography variant="sigma" textColor="neutral600">
177
- {formatMessage({ id: getTrad('Providers.status'), defaultMessage: 'Status' })}
159
+ <Layouts.Header
160
+ title={formatMessage({
161
+ id: getTrad('HeaderNav.link.providers'),
162
+ defaultMessage: 'Providers',
163
+ })}
164
+ />
165
+ <Layouts.Content>
166
+ <Table colCount={3} rowCount={providers.length + 1}>
167
+ <Thead>
168
+ <Tr>
169
+ <Th>
170
+ <Typography variant="sigma" textColor="neutral600">
171
+ {formatMessage({ id: 'global.name', defaultMessage: 'Name' })}
172
+ </Typography>
173
+ </Th>
174
+ <Th>
175
+ <Typography variant="sigma" textColor="neutral600">
176
+ {formatMessage({ id: getTrad('Providers.status'), defaultMessage: 'Status' })}
177
+ </Typography>
178
+ </Th>
179
+ <Th>
180
+ <Typography variant="sigma">
181
+ <VisuallyHidden>
182
+ {formatMessage({
183
+ id: 'global.settings',
184
+ defaultMessage: 'Settings',
185
+ })}
186
+ </VisuallyHidden>
187
+ </Typography>
188
+ </Th>
189
+ </Tr>
190
+ </Thead>
191
+ <Tbody>
192
+ {providers.map((provider) => (
193
+ <Tr
194
+ key={provider.name}
195
+ onClick={() => (canUpdate ? handleClickEdit(provider) : undefined)}
196
+ >
197
+ <Td width="45%">
198
+ <Typography fontWeight="semiBold" textColor="neutral800">
199
+ {provider.name}
178
200
  </Typography>
179
- </Th>
180
- <Th>
181
- <Typography variant="sigma">
182
- <VisuallyHidden>
183
- {formatMessage({
184
- id: 'global.settings',
185
- defaultMessage: 'Settings',
186
- })}
187
- </VisuallyHidden>
201
+ </Td>
202
+ <Td width="65%">
203
+ <Typography
204
+ textColor={provider.enabled ? 'success600' : 'danger600'}
205
+ data-testid={`enable-${provider.name}`}
206
+ >
207
+ {provider.enabled
208
+ ? formatMessage({
209
+ id: 'global.enabled',
210
+ defaultMessage: 'Enabled',
211
+ })
212
+ : formatMessage({
213
+ id: 'global.disabled',
214
+ defaultMessage: 'Disabled',
215
+ })}
188
216
  </Typography>
189
- </Th>
190
- </Tr>
191
- </Thead>
192
- <Tbody>
193
- {providers.map((provider) => (
194
- <Tr
195
- key={provider.name}
196
- onClick={() => (canUpdate ? handleClickEdit(provider) : undefined)}
197
- >
198
- <Td width="45%">
199
- <Typography fontWeight="semiBold" textColor="neutral800">
200
- {provider.name}
201
- </Typography>
202
- </Td>
203
- <Td width="65%">
204
- <Typography
205
- textColor={provider.enabled ? 'success600' : 'danger600'}
206
- data-testid={`enable-${provider.name}`}
217
+ </Td>
218
+ <Td onClick={(e) => e.stopPropagation()}>
219
+ {canUpdate && (
220
+ <IconButton
221
+ onClick={() => handleClickEdit(provider)}
222
+ variant="ghost"
223
+ label="Edit"
207
224
  >
208
- {provider.enabled
209
- ? formatMessage({
210
- id: 'global.enabled',
211
- defaultMessage: 'Enabled',
212
- })
213
- : formatMessage({
214
- id: 'global.disabled',
215
- defaultMessage: 'Disabled',
216
- })}
217
- </Typography>
218
- </Td>
219
- <Td onClick={(e) => e.stopPropagation()}>
220
- {canUpdate && (
221
- <IconButton
222
- onClick={() => handleClickEdit(provider)}
223
- variant="ghost"
224
- label="Edit"
225
- >
226
- <Pencil />
227
- </IconButton>
228
- )}
229
- </Td>
230
- </Tr>
231
- ))}
232
- </Tbody>
233
- </Table>
234
- </Layouts.Content>
235
- </Page.Main>
225
+ <Pencil />
226
+ </IconButton>
227
+ )}
228
+ </Td>
229
+ </Tr>
230
+ ))}
231
+ </Tbody>
232
+ </Table>
233
+ </Layouts.Content>
236
234
  <FormModal
237
235
  initialData={data[providerToEditName]}
238
236
  isOpen={isOpen}
@@ -249,7 +247,7 @@ export const ProvidersPage = () => {
249
247
  onSubmit={handleSubmit}
250
248
  providerToEditName={providerToEditName}
251
249
  />
252
- </Layouts.Root>
250
+ </Page.Main>
253
251
  );
254
252
  };
255
253
 
@@ -1,15 +1,6 @@
1
1
  import * as React from 'react';
2
2
 
3
- import {
4
- Button,
5
- Flex,
6
- Grid,
7
- Main,
8
- Textarea,
9
- TextInput,
10
- Typography,
11
- Field,
12
- } from '@strapi/design-system';
3
+ import { Button, Flex, Grid, Textarea, TextInput, Typography, Field } from '@strapi/design-system';
13
4
  import { Check } from '@strapi/icons';
14
5
  import { Page, useTracking, useNotification, useFetchClient, Layouts } from '@strapi/strapi/admin';
15
6
  import { Formik, Form } from 'formik';
@@ -68,7 +59,7 @@ export const CreatePage = () => {
68
59
  };
69
60
 
70
61
  return (
71
- <Main>
62
+ <Page.Main>
72
63
  <Page.Title>
73
64
  {formatMessage(
74
65
  { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },
@@ -141,7 +132,7 @@ export const CreatePage = () => {
141
132
  defaultMessage: 'Name',
142
133
  })}
143
134
  </Field.Label>
144
- <TextInput value={values.name || ''} onChange={handleChange} />
135
+ <TextInput type="text" value={values.name || ''} onChange={handleChange} />
145
136
  <Field.Error />
146
137
  </Field.Root>
147
138
  </Grid.Item>
@@ -183,7 +174,7 @@ export const CreatePage = () => {
183
174
  </Form>
184
175
  )}
185
176
  </Formik>
186
- </Main>
177
+ </Page.Main>
187
178
  );
188
179
  };
189
180
 
@@ -1,15 +1,6 @@
1
1
  import * as React from 'react';
2
2
 
3
- import {
4
- Main,
5
- Button,
6
- Flex,
7
- TextInput,
8
- Textarea,
9
- Typography,
10
- Grid,
11
- Field,
12
- } from '@strapi/design-system';
3
+ import { Button, Flex, TextInput, Textarea, Typography, Grid, Field } from '@strapi/design-system';
13
4
  import { Check } from '@strapi/icons';
14
5
  import {
15
6
  Page,
@@ -86,7 +77,7 @@ export const EditPage = () => {
86
77
  }
87
78
 
88
79
  return (
89
- <Main>
80
+ <Page.Main>
90
81
  <Page.Title>
91
82
  {formatMessage(
92
83
  { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },
@@ -162,7 +153,7 @@ export const EditPage = () => {
162
153
  defaultMessage: 'Name',
163
154
  })}
164
155
  </Field.Label>
165
- <TextInput value={values.name || ''} onChange={handleChange} />
156
+ <TextInput type="text" value={values.name || ''} onChange={handleChange} />
166
157
  <Field.Error />
167
158
  </Field.Root>
168
159
  </Grid.Item>
@@ -204,7 +195,7 @@ export const EditPage = () => {
204
195
  </Form>
205
196
  )}
206
197
  </Formik>
207
- </Main>
198
+ </Page.Main>
208
199
  );
209
200
  };
210
201
 
@@ -153,107 +153,105 @@ export const RolesListPage = () => {
153
153
  }
154
154
 
155
155
  return (
156
- <Layouts.Root>
156
+ <Page.Main>
157
157
  <Page.Title>
158
158
  {formatMessage(
159
159
  { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },
160
160
  { name: pageTitle }
161
161
  )}
162
162
  </Page.Title>
163
- <Page.Main>
164
- <Layouts.Header
165
- title={formatMessage({
166
- id: 'global.roles',
167
- defaultMessage: 'Roles',
168
- })}
169
- subtitle={formatMessage({
170
- id: 'Settings.roles.list.description',
171
- defaultMessage: 'List of roles',
172
- })}
173
- primaryAction={
174
- canCreate ? (
175
- <LinkButton
176
- to="new"
177
- tag={NavLink}
178
- onClick={() => trackUsage('willCreateRole')}
179
- startIcon={<Plus />}
180
- size="S"
181
- >
182
- {formatMessage({
183
- id: getTrad('List.button.roles'),
184
- defaultMessage: 'Add new role',
185
- })}
186
- </LinkButton>
187
- ) : null
188
- }
189
- />
190
-
191
- <Layouts.Action
192
- startActions={
193
- <SearchInput
194
- label={formatMessage({
195
- id: 'app.component.search.label',
196
- defaultMessage: 'Search',
163
+ <Layouts.Header
164
+ title={formatMessage({
165
+ id: 'global.roles',
166
+ defaultMessage: 'Roles',
167
+ })}
168
+ subtitle={formatMessage({
169
+ id: 'Settings.roles.list.description',
170
+ defaultMessage: 'List of roles',
171
+ })}
172
+ primaryAction={
173
+ canCreate ? (
174
+ <LinkButton
175
+ to="new"
176
+ tag={NavLink}
177
+ onClick={() => trackUsage('willCreateRole')}
178
+ startIcon={<Plus />}
179
+ size="S"
180
+ >
181
+ {formatMessage({
182
+ id: getTrad('List.button.roles'),
183
+ defaultMessage: 'Add new role',
197
184
  })}
198
- />
199
- }
200
- />
185
+ </LinkButton>
186
+ ) : null
187
+ }
188
+ />
189
+
190
+ <Layouts.Action
191
+ startActions={
192
+ <SearchInput
193
+ label={formatMessage({
194
+ id: 'app.component.search.label',
195
+ defaultMessage: 'Search',
196
+ })}
197
+ />
198
+ }
199
+ />
201
200
 
202
- <Layouts.Content>
203
- {!canRead && <Page.NoPermissions />}
204
- {canRead && sortedRoles && sortedRoles?.length ? (
205
- <Table colCount={colCount} rowCount={rowCount}>
206
- <Thead>
207
- <Tr>
208
- <Th>
209
- <Typography variant="sigma" textColor="neutral600">
210
- {formatMessage({ id: 'global.name', defaultMessage: 'Name' })}
211
- </Typography>
212
- </Th>
213
- <Th>
214
- <Typography variant="sigma" textColor="neutral600">
215
- {formatMessage({
216
- id: 'global.description',
217
- defaultMessage: 'Description',
218
- })}
219
- </Typography>
220
- </Th>
221
- <Th>
222
- <Typography variant="sigma" textColor="neutral600">
223
- {formatMessage({
224
- id: 'global.users',
225
- defaultMessage: 'Users',
226
- })}
227
- </Typography>
228
- </Th>
229
- <Th>
230
- <VisuallyHidden>
231
- {formatMessage({
232
- id: 'global.actions',
233
- defaultMessage: 'Actions',
234
- })}
235
- </VisuallyHidden>
236
- </Th>
237
- </Tr>
238
- </Thead>
239
- <TableBody
240
- sortedRoles={sortedRoles}
241
- canDelete={canDelete}
242
- canUpdate={canUpdate}
243
- permissions={PERMISSIONS}
244
- setRoleToDelete={setRoleToDelete}
245
- onDelete={[showConfirmDelete, setShowConfirmDelete]}
246
- />
247
- </Table>
248
- ) : (
249
- <EmptyStateLayout content={formatMessage(emptyLayout[emptyContent])} />
250
- )}
251
- </Layouts.Content>
252
- <Dialog.Root open={showConfirmDelete} onOpenChange={handleShowConfirmDelete}>
253
- <ConfirmDialog onConfirm={handleConfirmDelete} />
254
- </Dialog.Root>
255
- </Page.Main>
256
- </Layouts.Root>
201
+ <Layouts.Content>
202
+ {!canRead && <Page.NoPermissions />}
203
+ {canRead && sortedRoles && sortedRoles?.length ? (
204
+ <Table colCount={colCount} rowCount={rowCount}>
205
+ <Thead>
206
+ <Tr>
207
+ <Th>
208
+ <Typography variant="sigma" textColor="neutral600">
209
+ {formatMessage({ id: 'global.name', defaultMessage: 'Name' })}
210
+ </Typography>
211
+ </Th>
212
+ <Th>
213
+ <Typography variant="sigma" textColor="neutral600">
214
+ {formatMessage({
215
+ id: 'global.description',
216
+ defaultMessage: 'Description',
217
+ })}
218
+ </Typography>
219
+ </Th>
220
+ <Th>
221
+ <Typography variant="sigma" textColor="neutral600">
222
+ {formatMessage({
223
+ id: 'global.users',
224
+ defaultMessage: 'Users',
225
+ })}
226
+ </Typography>
227
+ </Th>
228
+ <Th>
229
+ <VisuallyHidden>
230
+ {formatMessage({
231
+ id: 'global.actions',
232
+ defaultMessage: 'Actions',
233
+ })}
234
+ </VisuallyHidden>
235
+ </Th>
236
+ </Tr>
237
+ </Thead>
238
+ <TableBody
239
+ sortedRoles={sortedRoles}
240
+ canDelete={canDelete}
241
+ canUpdate={canUpdate}
242
+ permissions={PERMISSIONS}
243
+ setRoleToDelete={setRoleToDelete}
244
+ onDelete={[showConfirmDelete, setShowConfirmDelete]}
245
+ />
246
+ </Table>
247
+ ) : (
248
+ <EmptyStateLayout content={formatMessage(emptyLayout[emptyContent])} />
249
+ )}
250
+ </Layouts.Content>
251
+ <Dialog.Root open={showConfirmDelete} onOpenChange={handleShowConfirmDelete}>
252
+ <ConfirmDialog onConfirm={handleConfirmDelete} />
253
+ </Dialog.Root>
254
+ </Page.Main>
257
255
  );
258
256
  };
259
257
 
@@ -17,6 +17,7 @@
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",