@strapi/plugin-users-permissions 4.0.0-beta.2 → 4.0.0-beta.20
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/BoundRoute/index.js +23 -27
- package/admin/src/components/FormModal/Input/index.js +2 -2
- package/admin/src/components/FormModal/index.js +10 -5
- package/admin/src/components/Permissions/PermissionRow/CheckboxWrapper.js +1 -1
- package/admin/src/components/Permissions/PermissionRow/SubCategory.js +12 -10
- package/admin/src/components/Permissions/PermissionRow/index.js +1 -1
- package/admin/src/components/Permissions/index.js +12 -8
- package/admin/src/components/Policies/index.js +12 -9
- package/admin/src/components/UsersPermissions/index.js +12 -15
- package/admin/src/index.js +0 -8
- package/admin/src/pages/AdvancedSettings/index.js +13 -13
- package/admin/src/pages/EmailTemplates/components/EmailForm.js +10 -5
- package/admin/src/pages/EmailTemplates/components/EmailTable.js +16 -16
- package/admin/src/pages/EmailTemplates/index.js +3 -3
- package/admin/src/pages/Providers/index.js +21 -21
- package/admin/src/pages/Providers/utils/api.js +1 -1
- package/admin/src/pages/Roles/CreatePage/index.js +13 -13
- package/admin/src/pages/Roles/EditPage/index.js +23 -13
- package/admin/src/pages/Roles/ListPage/components/TableBody.js +14 -10
- package/admin/src/pages/Roles/ListPage/index.js +19 -25
- package/documentation/1.0.0/overrides/users-permissions-User.json +7 -7
- package/package.json +29 -30
- package/server/bootstrap/index.js +17 -17
- package/server/config.js +2 -2
- package/server/content-types/permission/index.js +3 -0
- package/server/content-types/role/index.js +3 -0
- package/server/controllers/auth.js +73 -215
- package/server/controllers/{user/admin.js → content-manager-user.js} +44 -75
- package/server/controllers/index.js +2 -0
- package/server/controllers/role.js +7 -7
- package/server/controllers/settings.js +5 -4
- package/server/controllers/user.js +118 -28
- package/server/controllers/validation/auth.js +29 -0
- package/server/controllers/validation/user.js +38 -0
- package/server/middlewares/rateLimit.js +1 -1
- package/server/routes/admin/role.js +5 -5
- package/server/routes/admin/settings.js +6 -6
- package/server/routes/content-api/auth.js +5 -7
- package/server/services/jwt.js +9 -17
- package/server/services/providers.js +13 -10
- package/server/services/role.js +5 -10
- package/server/services/user.js +8 -6
- package/server/services/users-permissions.js +56 -45
- package/server/strategies/users-permissions.js +23 -22
- package/admin/src/assets/images/logo.svg +0 -1
- package/server/controllers/user/api.js +0 -158
|
@@ -15,14 +15,14 @@ import {
|
|
|
15
15
|
import has from 'lodash/has';
|
|
16
16
|
import upperFirst from 'lodash/upperFirst';
|
|
17
17
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
18
|
-
import { HeaderLayout, Layout, ContentLayout } from '@strapi/
|
|
19
|
-
import { Main } from '@strapi/
|
|
20
|
-
import { useNotifyAT } from '@strapi/
|
|
21
|
-
import { Table, Thead, Tr, Th, Tbody, Td } from '@strapi/
|
|
22
|
-
import {
|
|
23
|
-
import { VisuallyHidden } from '@strapi/
|
|
24
|
-
import { IconButton } from '@strapi/
|
|
25
|
-
import
|
|
18
|
+
import { HeaderLayout, Layout, ContentLayout } from '@strapi/design-system/Layout';
|
|
19
|
+
import { Main } from '@strapi/design-system/Main';
|
|
20
|
+
import { useNotifyAT } from '@strapi/design-system/LiveRegions';
|
|
21
|
+
import { Table, Thead, Tr, Th, Tbody, Td } from '@strapi/design-system/Table';
|
|
22
|
+
import { Typography } from '@strapi/design-system/Typography';
|
|
23
|
+
import { VisuallyHidden } from '@strapi/design-system/VisuallyHidden';
|
|
24
|
+
import { IconButton } from '@strapi/design-system/IconButton';
|
|
25
|
+
import Pencil from '@strapi/icons/Pencil';
|
|
26
26
|
import { useQuery, useMutation, useQueryClient } from 'react-query';
|
|
27
27
|
import forms from './utils/forms';
|
|
28
28
|
import { fetchData, putProvider } from './utils/api';
|
|
@@ -167,31 +167,31 @@ export const ProvidersPage = () => {
|
|
|
167
167
|
<Thead>
|
|
168
168
|
<Tr>
|
|
169
169
|
<Th>
|
|
170
|
-
<
|
|
170
|
+
<Typography variant="sigma" textColor="neutral600">
|
|
171
171
|
<VisuallyHidden>
|
|
172
172
|
{formatMessage({ id: getTrad('Providers.image'), defaultMessage: 'Image' })}
|
|
173
173
|
</VisuallyHidden>
|
|
174
|
-
</
|
|
174
|
+
</Typography>
|
|
175
175
|
</Th>
|
|
176
176
|
<Th>
|
|
177
|
-
<
|
|
177
|
+
<Typography variant="sigma" textColor="neutral600">
|
|
178
178
|
{formatMessage({ id: getTrad('Providers.name'), defaultMessage: 'Name' })}
|
|
179
|
-
</
|
|
179
|
+
</Typography>
|
|
180
180
|
</Th>
|
|
181
181
|
<Th>
|
|
182
|
-
<
|
|
182
|
+
<Typography variant="sigma" textColor="neutral600">
|
|
183
183
|
{formatMessage({ id: getTrad('Providers.status'), defaultMessage: 'Status' })}
|
|
184
|
-
</
|
|
184
|
+
</Typography>
|
|
185
185
|
</Th>
|
|
186
186
|
<Th>
|
|
187
|
-
<
|
|
187
|
+
<Typography variant="sigma">
|
|
188
188
|
<VisuallyHidden>
|
|
189
189
|
{formatMessage({
|
|
190
190
|
id: getTrad('Providers.settings'),
|
|
191
191
|
defaultMessage: 'Settings',
|
|
192
192
|
})}
|
|
193
193
|
</VisuallyHidden>
|
|
194
|
-
</
|
|
194
|
+
</Typography>
|
|
195
195
|
</Th>
|
|
196
196
|
</Tr>
|
|
197
197
|
</Thead>
|
|
@@ -208,12 +208,12 @@ export const ProvidersPage = () => {
|
|
|
208
208
|
<FontAwesomeIcon icon={provider.icon} />
|
|
209
209
|
</Td>
|
|
210
210
|
<Td width="45%">
|
|
211
|
-
<
|
|
211
|
+
<Typography fontWeight="semiBold" textColor="neutral800">
|
|
212
212
|
{provider.name}
|
|
213
|
-
</
|
|
213
|
+
</Typography>
|
|
214
214
|
</Td>
|
|
215
215
|
<Td width="65%">
|
|
216
|
-
<
|
|
216
|
+
<Typography
|
|
217
217
|
textColor={provider.enabled ? 'success600' : 'danger600'}
|
|
218
218
|
data-testid={`enable-${provider.name}`}
|
|
219
219
|
>
|
|
@@ -226,14 +226,14 @@ export const ProvidersPage = () => {
|
|
|
226
226
|
id: getTrad('Providers.disabled'),
|
|
227
227
|
defaultMessage: 'Disabled',
|
|
228
228
|
})}
|
|
229
|
-
</
|
|
229
|
+
</Typography>
|
|
230
230
|
</Td>
|
|
231
231
|
<Td {...stopPropagation}>
|
|
232
232
|
{canUpdate && (
|
|
233
233
|
<IconButton
|
|
234
234
|
onClick={() => handleClickEdit(provider)}
|
|
235
235
|
noBorder
|
|
236
|
-
icon={<
|
|
236
|
+
icon={<Pencil />}
|
|
237
237
|
label="Edit"
|
|
238
238
|
/>
|
|
239
239
|
)}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import React, { useState, useRef } from 'react';
|
|
2
2
|
import { useHistory } from 'react-router-dom';
|
|
3
|
-
import { ContentLayout, HeaderLayout } from '@strapi/
|
|
4
|
-
import { Main } from '@strapi/
|
|
5
|
-
import { Button } from '@strapi/
|
|
6
|
-
import { Stack } from '@strapi/
|
|
7
|
-
import { Box } from '@strapi/
|
|
8
|
-
import { TextInput } from '@strapi/
|
|
9
|
-
import { Textarea } from '@strapi/
|
|
10
|
-
import {
|
|
11
|
-
import
|
|
12
|
-
import { GridItem, Grid } from '@strapi/
|
|
3
|
+
import { ContentLayout, HeaderLayout } from '@strapi/design-system/Layout';
|
|
4
|
+
import { Main } from '@strapi/design-system/Main';
|
|
5
|
+
import { Button } from '@strapi/design-system/Button';
|
|
6
|
+
import { Stack } from '@strapi/design-system/Stack';
|
|
7
|
+
import { Box } from '@strapi/design-system/Box';
|
|
8
|
+
import { TextInput } from '@strapi/design-system/TextInput';
|
|
9
|
+
import { Textarea } from '@strapi/design-system/Textarea';
|
|
10
|
+
import { Typography } from '@strapi/design-system/Typography';
|
|
11
|
+
import Check from '@strapi/icons/Check';
|
|
12
|
+
import { GridItem, Grid } from '@strapi/design-system/Grid';
|
|
13
13
|
import { Formik } from 'formik';
|
|
14
14
|
import { useIntl } from 'react-intl';
|
|
15
15
|
import {
|
|
@@ -84,7 +84,7 @@ const EditPage = () => {
|
|
|
84
84
|
<HeaderLayout
|
|
85
85
|
primaryAction={
|
|
86
86
|
!isLoadingPlugins && (
|
|
87
|
-
<Button type="submit" loading={isSubmitting} startIcon={<
|
|
87
|
+
<Button type="submit" loading={isSubmitting} startIcon={<Check />}>
|
|
88
88
|
{formatMessage({
|
|
89
89
|
id: 'app.components.Button.save',
|
|
90
90
|
defaultMessage: 'Save',
|
|
@@ -113,12 +113,12 @@ const EditPage = () => {
|
|
|
113
113
|
paddingRight={7}
|
|
114
114
|
>
|
|
115
115
|
<Stack size={4}>
|
|
116
|
-
<
|
|
116
|
+
<Typography variant="delta" as="h2">
|
|
117
117
|
{formatMessage({
|
|
118
118
|
id: getTrad('EditPage.form.roles'),
|
|
119
119
|
defaultMessage: 'Role details',
|
|
120
120
|
})}
|
|
121
|
-
</
|
|
121
|
+
</Typography>
|
|
122
122
|
<Grid gap={4}>
|
|
123
123
|
<GridItem col={6}>
|
|
124
124
|
<TextInput
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import React, { useState, useRef } from 'react';
|
|
2
|
-
import { ContentLayout, HeaderLayout } from '@strapi/
|
|
3
|
-
import { Main } from '@strapi/
|
|
4
|
-
import { Button } from '@strapi/
|
|
5
|
-
import { Stack } from '@strapi/
|
|
6
|
-
import { Box } from '@strapi/
|
|
7
|
-
import { TextInput } from '@strapi/
|
|
8
|
-
import { Textarea } from '@strapi/
|
|
9
|
-
import {
|
|
10
|
-
import
|
|
11
|
-
import
|
|
2
|
+
import { ContentLayout, HeaderLayout } from '@strapi/design-system/Layout';
|
|
3
|
+
import { Main } from '@strapi/design-system/Main';
|
|
4
|
+
import { Button } from '@strapi/design-system/Button';
|
|
5
|
+
import { Stack } from '@strapi/design-system/Stack';
|
|
6
|
+
import { Box } from '@strapi/design-system/Box';
|
|
7
|
+
import { TextInput } from '@strapi/design-system/TextInput';
|
|
8
|
+
import { Textarea } from '@strapi/design-system/Textarea';
|
|
9
|
+
import { Typography } from '@strapi/design-system/Typography';
|
|
10
|
+
import ArrowLeft from '@strapi/icons/ArrowLeft';
|
|
11
|
+
import Check from '@strapi/icons/Check';
|
|
12
|
+
import { Link } from '@strapi/design-system/Link';
|
|
13
|
+
import { GridItem, Grid } from '@strapi/design-system/Grid';
|
|
12
14
|
import { Formik } from 'formik';
|
|
13
15
|
import { useIntl } from 'react-intl';
|
|
14
16
|
import { useRouteMatch } from 'react-router-dom';
|
|
@@ -92,7 +94,7 @@ const EditPage = () => {
|
|
|
92
94
|
disabled={role.code === 'strapi-super-admin'}
|
|
93
95
|
type="submit"
|
|
94
96
|
loading={isSubmitting}
|
|
95
|
-
startIcon={<
|
|
97
|
+
startIcon={<Check />}
|
|
96
98
|
>
|
|
97
99
|
{formatMessage({
|
|
98
100
|
id: 'app.components.Button.save',
|
|
@@ -103,6 +105,14 @@ const EditPage = () => {
|
|
|
103
105
|
}
|
|
104
106
|
title={role.name}
|
|
105
107
|
subtitle={role.description}
|
|
108
|
+
navigationAction={
|
|
109
|
+
<Link startIcon={<ArrowLeft />} to="/settings/users-permissions/roles">
|
|
110
|
+
{formatMessage({
|
|
111
|
+
id: 'app.components.go-back',
|
|
112
|
+
defaultMessage: 'Go back',
|
|
113
|
+
})}
|
|
114
|
+
</Link>
|
|
115
|
+
}
|
|
106
116
|
/>
|
|
107
117
|
<ContentLayout>
|
|
108
118
|
<Stack size={7}>
|
|
@@ -116,12 +126,12 @@ const EditPage = () => {
|
|
|
116
126
|
paddingRight={7}
|
|
117
127
|
>
|
|
118
128
|
<Stack size={4}>
|
|
119
|
-
<
|
|
129
|
+
<Typography variant="delta" as="h2">
|
|
120
130
|
{formatMessage({
|
|
121
131
|
id: getTrad('EditPage.form.roles'),
|
|
122
132
|
defaultMessage: 'Role details',
|
|
123
133
|
})}
|
|
124
|
-
</
|
|
134
|
+
</Typography>
|
|
125
135
|
<Grid gap={4}>
|
|
126
136
|
<GridItem col={6}>
|
|
127
137
|
<TextInput
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
|
-
import { IconButton
|
|
4
|
-
import {
|
|
3
|
+
import { IconButton } from '@strapi/design-system/IconButton';
|
|
4
|
+
import { Typography } from '@strapi/design-system/Typography';
|
|
5
|
+
import { Flex } from '@strapi/design-system/Flex';
|
|
6
|
+
import { Tbody, Tr, Td } from '@strapi/design-system/Table';
|
|
7
|
+
import Pencil from '@strapi/icons/Pencil';
|
|
8
|
+
import Trash from '@strapi/icons/Trash';
|
|
5
9
|
import { CheckPermissions, onRowClick, stopPropagation } from '@strapi/helper-plugin';
|
|
6
10
|
import { useIntl } from 'react-intl';
|
|
7
11
|
import { useHistory } from 'react-router-dom';
|
|
@@ -30,26 +34,26 @@ const TableBody = ({ sortedRoles, canDelete, permissions, setRoleToDelete, onDel
|
|
|
30
34
|
{sortedRoles?.map(role => (
|
|
31
35
|
<Tr key={role.name} {...onRowClick({ fn: () => handleClickEdit(role.id) })}>
|
|
32
36
|
<Td width="20%">
|
|
33
|
-
<
|
|
37
|
+
<Typography>{role.name}</Typography>
|
|
34
38
|
</Td>
|
|
35
39
|
<Td width="50%">
|
|
36
|
-
<
|
|
40
|
+
<Typography>{role.description}</Typography>
|
|
37
41
|
</Td>
|
|
38
42
|
<Td width="30%">
|
|
39
|
-
<
|
|
43
|
+
<Typography>
|
|
40
44
|
{`${role.nb_users} ${formatMessage({
|
|
41
45
|
id: getTrad('Roles.users'),
|
|
42
46
|
defaultMessage: 'users',
|
|
43
47
|
}).toLowerCase()}`}
|
|
44
|
-
</
|
|
48
|
+
</Typography>
|
|
45
49
|
</Td>
|
|
46
50
|
<Td>
|
|
47
|
-
<
|
|
51
|
+
<Flex justifyContent="end" {...stopPropagation}>
|
|
48
52
|
<CheckPermissions permissions={permissions.updateRole}>
|
|
49
53
|
<IconButton
|
|
50
54
|
onClick={() => handleClickEdit(role.id)}
|
|
51
55
|
noBorder
|
|
52
|
-
icon={<
|
|
56
|
+
icon={<Pencil />}
|
|
53
57
|
label={formatMessage(
|
|
54
58
|
{ id: 'app.component.table.edit', defaultMessage: 'Edit {target}' },
|
|
55
59
|
{ target: `${role.name}` }
|
|
@@ -61,7 +65,7 @@ const TableBody = ({ sortedRoles, canDelete, permissions, setRoleToDelete, onDel
|
|
|
61
65
|
<IconButton
|
|
62
66
|
onClick={() => handleClickDelete(role.id)}
|
|
63
67
|
noBorder
|
|
64
|
-
icon={<
|
|
68
|
+
icon={<Trash />}
|
|
65
69
|
label={formatMessage(
|
|
66
70
|
{ id: 'app.component.table.delete', defaultMessage: 'Delete {target}' },
|
|
67
71
|
{ target: `${role.name}` }
|
|
@@ -69,7 +73,7 @@ const TableBody = ({ sortedRoles, canDelete, permissions, setRoleToDelete, onDel
|
|
|
69
73
|
/>
|
|
70
74
|
</CheckPermissions>
|
|
71
75
|
)}
|
|
72
|
-
</
|
|
76
|
+
</Flex>
|
|
73
77
|
</Td>
|
|
74
78
|
</Tr>
|
|
75
79
|
))}
|
|
@@ -1,20 +1,12 @@
|
|
|
1
1
|
import React, { useMemo, useState } from 'react';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
Th,
|
|
11
|
-
TableLabel,
|
|
12
|
-
useNotifyAT,
|
|
13
|
-
ContentLayout,
|
|
14
|
-
ActionLayout,
|
|
15
|
-
VisuallyHidden,
|
|
16
|
-
} from '@strapi/parts';
|
|
17
|
-
import AddIcon from '@strapi/icons/AddIcon';
|
|
2
|
+
import { Button } from '@strapi/design-system/Button';
|
|
3
|
+
import { HeaderLayout, Layout, ContentLayout, ActionLayout } from '@strapi/design-system/Layout';
|
|
4
|
+
import { Main } from '@strapi/design-system/Main';
|
|
5
|
+
import { Table, Tr, Thead, Th } from '@strapi/design-system/Table';
|
|
6
|
+
import { VisuallyHidden } from '@strapi/design-system/VisuallyHidden';
|
|
7
|
+
import { Typography } from '@strapi/design-system/Typography';
|
|
8
|
+
import { useNotifyAT } from '@strapi/design-system/LiveRegions';
|
|
9
|
+
import Plus from '@strapi/icons/Plus';
|
|
18
10
|
import {
|
|
19
11
|
useTracking,
|
|
20
12
|
SettingsPageTitle,
|
|
@@ -23,7 +15,8 @@ import {
|
|
|
23
15
|
useRBAC,
|
|
24
16
|
NoPermissions,
|
|
25
17
|
LoadingIndicatorPage,
|
|
26
|
-
|
|
18
|
+
SearchURLQuery,
|
|
19
|
+
useFocusWhenNavigate,
|
|
27
20
|
useQueryParams,
|
|
28
21
|
EmptyStateLayout,
|
|
29
22
|
ConfirmDialog,
|
|
@@ -50,6 +43,7 @@ const RoleListPage = () => {
|
|
|
50
43
|
const [showConfirmDelete, setShowConfirmDelete] = useState(false);
|
|
51
44
|
const [isConfirmButtonLoading, setIsConfirmButtonLoading] = useState(false);
|
|
52
45
|
const [roleToDelete, setRoleToDelete] = useState();
|
|
46
|
+
useFocusWhenNavigate();
|
|
53
47
|
|
|
54
48
|
const queryClient = useQueryClient();
|
|
55
49
|
|
|
@@ -137,7 +131,7 @@ const RoleListPage = () => {
|
|
|
137
131
|
})}
|
|
138
132
|
primaryAction={
|
|
139
133
|
<CheckPermissions permissions={permissions.createRole}>
|
|
140
|
-
<Button onClick={handleNewRoleClick} startIcon={<
|
|
134
|
+
<Button onClick={handleNewRoleClick} startIcon={<Plus />} size="L">
|
|
141
135
|
{formatMessage({
|
|
142
136
|
id: getTrad('List.button.roles'),
|
|
143
137
|
defaultMessage: 'Add new role',
|
|
@@ -149,7 +143,7 @@ const RoleListPage = () => {
|
|
|
149
143
|
|
|
150
144
|
<ActionLayout
|
|
151
145
|
startActions={
|
|
152
|
-
<
|
|
146
|
+
<SearchURLQuery
|
|
153
147
|
label={formatMessage({
|
|
154
148
|
id: 'app.component.search.label',
|
|
155
149
|
defaultMessage: 'Search',
|
|
@@ -166,25 +160,25 @@ const RoleListPage = () => {
|
|
|
166
160
|
<Thead>
|
|
167
161
|
<Tr>
|
|
168
162
|
<Th>
|
|
169
|
-
<
|
|
163
|
+
<Typography variant="sigma" textColor="neutral600">
|
|
170
164
|
{formatMessage({ id: getTrad('Roles.name'), defaultMessage: 'Name' })}
|
|
171
|
-
</
|
|
165
|
+
</Typography>
|
|
172
166
|
</Th>
|
|
173
167
|
<Th>
|
|
174
|
-
<
|
|
168
|
+
<Typography variant="sigma" textColor="neutral600">
|
|
175
169
|
{formatMessage({
|
|
176
170
|
id: getTrad('Roles.description'),
|
|
177
171
|
defaultMessage: 'Description',
|
|
178
172
|
})}
|
|
179
|
-
</
|
|
173
|
+
</Typography>
|
|
180
174
|
</Th>
|
|
181
175
|
<Th>
|
|
182
|
-
<
|
|
176
|
+
<Typography variant="sigma" textColor="neutral600">
|
|
183
177
|
{formatMessage({
|
|
184
178
|
id: getTrad('Roles.users'),
|
|
185
179
|
defaultMessage: 'Users',
|
|
186
180
|
})}
|
|
187
|
-
</
|
|
181
|
+
</Typography>
|
|
188
182
|
</Th>
|
|
189
183
|
<Th>
|
|
190
184
|
<VisuallyHidden>
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"security": [],
|
|
7
7
|
"externalDocs": {
|
|
8
8
|
"description": "Find out more in the strapi's documentation",
|
|
9
|
-
"url": "https://strapi.io/
|
|
9
|
+
"url": "https://docs.strapi.io/developer-docs/latest/plugins/users-permissions.html#registration"
|
|
10
10
|
},
|
|
11
11
|
"responses": {
|
|
12
12
|
"200": {
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"security": [],
|
|
59
59
|
"externalDocs": {
|
|
60
60
|
"description": "Find out more in the strapi's documentation",
|
|
61
|
-
"url": "https://strapi.io/
|
|
61
|
+
"url": "https://docs.strapi.io/developer-docs/latest/plugins/users-permissions.html#email-validation"
|
|
62
62
|
},
|
|
63
63
|
"responses": {
|
|
64
64
|
"200": {
|
|
@@ -130,7 +130,7 @@
|
|
|
130
130
|
],
|
|
131
131
|
"externalDocs": {
|
|
132
132
|
"description": "Find out more about the authentication flow in the strapi documentation",
|
|
133
|
-
"url": "https://strapi.io/
|
|
133
|
+
"url": "https://docs.strapi.io/developer-docs/latest/plugins/users-permissions.html#providers"
|
|
134
134
|
},
|
|
135
135
|
"responses": {
|
|
136
136
|
"200": {
|
|
@@ -143,7 +143,7 @@
|
|
|
143
143
|
"post": {
|
|
144
144
|
"externalDocs": {
|
|
145
145
|
"description": "Find out more in the strapi's documentation",
|
|
146
|
-
"url": "https://strapi.io/
|
|
146
|
+
"url": "https://docs.strapi.io/developer-docs/latest/plugins/users-permissions.html#login"
|
|
147
147
|
},
|
|
148
148
|
"tags": ["Authentication"],
|
|
149
149
|
"security": [],
|
|
@@ -188,7 +188,7 @@
|
|
|
188
188
|
"tags": ["Authentication"],
|
|
189
189
|
"externalDocs": {
|
|
190
190
|
"description": "Find out more in the strapi's documentation",
|
|
191
|
-
"url": "https://strapi.io/
|
|
191
|
+
"url": "https://docs.strapi.io/developer-docs/latest/plugins/users-permissions.html#providers"
|
|
192
192
|
},
|
|
193
193
|
"parameters": [
|
|
194
194
|
{
|
|
@@ -223,7 +223,7 @@
|
|
|
223
223
|
"summary": "Send an email to reset your password",
|
|
224
224
|
"externalDocs": {
|
|
225
225
|
"description": "Find out more in the strapi's documentation",
|
|
226
|
-
"url": "https://strapi.io/
|
|
226
|
+
"url": "https://docs.strapi.io/developer-docs/latest/plugins/users-permissions.html#forgotten-reset-password"
|
|
227
227
|
},
|
|
228
228
|
"requestBody": {
|
|
229
229
|
"description": "",
|
|
@@ -315,7 +315,7 @@
|
|
|
315
315
|
"description": "All the routes related to the authentication",
|
|
316
316
|
"externalDocs": {
|
|
317
317
|
"description": "Find out more in strapi's documentation",
|
|
318
|
-
"url": "https://strapi.io/
|
|
318
|
+
"url": "https://docs.strapi.io/developer-docs/latest/plugins/users-permissions.html"
|
|
319
319
|
}
|
|
320
320
|
},
|
|
321
321
|
{
|
package/package.json
CHANGED
|
@@ -1,23 +1,32 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strapi/plugin-users-permissions",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.20",
|
|
4
4
|
"description": "Protect your API with a full-authentication process based on JWT",
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
"
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git://github.com/strapi/strapi.git"
|
|
8
|
+
},
|
|
9
|
+
"license": "SEE LICENSE IN LICENSE",
|
|
10
|
+
"author": {
|
|
11
|
+
"name": "Strapi Solutions SAS",
|
|
12
|
+
"email": "hi@strapi.io",
|
|
13
|
+
"url": "https://strapi.io"
|
|
12
14
|
},
|
|
15
|
+
"maintainers": [
|
|
16
|
+
{
|
|
17
|
+
"name": "Strapi Solutions SAS",
|
|
18
|
+
"email": "hi@strapi.io",
|
|
19
|
+
"url": "https://strapi.io"
|
|
20
|
+
}
|
|
21
|
+
],
|
|
13
22
|
"scripts": {
|
|
14
23
|
"test": "echo \"no tests yet\""
|
|
15
24
|
},
|
|
16
25
|
"dependencies": {
|
|
17
26
|
"@purest/providers": "^1.0.2",
|
|
18
|
-
"@strapi/helper-plugin": "4.0.0-beta.
|
|
19
|
-
"@strapi/utils": "4.0.0-beta.
|
|
20
|
-
"bcryptjs": "
|
|
27
|
+
"@strapi/helper-plugin": "4.0.0-beta.20",
|
|
28
|
+
"@strapi/utils": "4.0.0-beta.20",
|
|
29
|
+
"bcryptjs": "2.4.3",
|
|
21
30
|
"grant-koa": "5.4.8",
|
|
22
31
|
"jsonwebtoken": "^8.1.0",
|
|
23
32
|
"koa2-ratelimit": "^0.9.0",
|
|
@@ -29,34 +38,24 @@
|
|
|
29
38
|
"react-redux": "7.2.3",
|
|
30
39
|
"react-router": "^5.2.0",
|
|
31
40
|
"react-router-dom": "5.2.0",
|
|
32
|
-
"reactstrap": "8.4.1",
|
|
33
41
|
"redux-saga": "^0.16.0",
|
|
34
42
|
"request": "^2.83.0",
|
|
43
|
+
"url-join": "4.0.1",
|
|
35
44
|
"uuid": "^3.1.0"
|
|
36
45
|
},
|
|
37
46
|
"devDependencies": {
|
|
38
47
|
"koa": "^2.13.1"
|
|
39
48
|
},
|
|
40
|
-
"author": {
|
|
41
|
-
"name": "Strapi team",
|
|
42
|
-
"email": "hi@strapi.io",
|
|
43
|
-
"url": "https://strapi.io"
|
|
44
|
-
},
|
|
45
|
-
"maintainers": [
|
|
46
|
-
{
|
|
47
|
-
"name": "Strapi team",
|
|
48
|
-
"email": "hi@strapi.io",
|
|
49
|
-
"url": "https://strapi.io"
|
|
50
|
-
}
|
|
51
|
-
],
|
|
52
|
-
"repository": {
|
|
53
|
-
"type": "git",
|
|
54
|
-
"url": "git://github.com/strapi/strapi.git"
|
|
55
|
-
},
|
|
56
49
|
"engines": {
|
|
57
50
|
"node": ">=12.x.x <=16.x.x",
|
|
58
51
|
"npm": ">=6.0.0"
|
|
59
52
|
},
|
|
60
|
-
"
|
|
61
|
-
|
|
53
|
+
"strapi": {
|
|
54
|
+
"displayName": "Roles & Permissions",
|
|
55
|
+
"name": "users-permissions",
|
|
56
|
+
"description": "Protect your API with a full authentication process based on JWT. This plugin comes also with an ACL strategy that allows you to manage the permissions between the groups of users.",
|
|
57
|
+
"required": true,
|
|
58
|
+
"kind": "plugin"
|
|
59
|
+
},
|
|
60
|
+
"gitHead": "b4993dab9f6dbc583709167f459b6f00e0b4baa6"
|
|
62
61
|
}
|