@strapi/plugin-users-permissions 4.0.0-next.1 → 4.0.0-next.13

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 (74) hide show
  1. package/admin/src/index.js +31 -28
  2. package/admin/src/pages/AdvancedSettings/index.js +14 -2
  3. package/admin/src/pages/AdvancedSettings/utils/form.js +2 -2
  4. package/admin/src/pages/EmailTemplates/index.js +8 -1
  5. package/admin/src/pages/Providers/index.js +8 -1
  6. package/admin/src/pages/Roles/CreatePage/index.js +1 -1
  7. package/admin/src/pages/Roles/EditPage/index.js +2 -2
  8. package/admin/src/pages/Roles/ListPage/index.js +1 -1
  9. package/admin/src/pages/Roles/index.js +14 -8
  10. package/admin/src/permissions.js +12 -14
  11. package/admin/src/translations/en.json +4 -0
  12. package/admin/src/translations/zh-Hans.json +26 -7
  13. package/documentation/1.0.0/overrides/users-permissions-Role.json +6 -6
  14. package/package.json +8 -6
  15. package/{config/functions/bootstrap.js → server/bootstrap/index.js} +9 -18
  16. package/{config → server/bootstrap}/users-permissions-actions.js +0 -0
  17. package/server/config.js +23 -0
  18. package/server/content-types/index.js +11 -0
  19. package/server/content-types/permission/index.js +31 -0
  20. package/server/content-types/role/index.js +48 -0
  21. package/server/content-types/user/index.js +72 -0
  22. package/{models/User.config.js → server/content-types/user/schema-config.js} +0 -0
  23. package/{controllers → server/controllers}/auth.js +63 -77
  24. package/server/controllers/index.js +15 -0
  25. package/server/controllers/permissions.js +26 -0
  26. package/server/controllers/role.js +77 -0
  27. package/server/controllers/settings.js +84 -0
  28. package/{controllers → server/controllers}/user/admin.js +26 -42
  29. package/{controllers → server/controllers}/user/api.js +11 -27
  30. package/{controllers → server/controllers}/user.js +2 -18
  31. package/{controllers → server/controllers}/validation/email-template.js +0 -0
  32. package/server/index.js +21 -0
  33. package/server/policies/index.js +7 -0
  34. package/{config → server}/policies/rateLimit.js +4 -8
  35. package/server/register.js +7 -0
  36. package/server/routes/admin/index.js +10 -0
  37. package/server/routes/admin/permissions.js +20 -0
  38. package/server/routes/admin/role.js +79 -0
  39. package/server/routes/admin/settings.js +95 -0
  40. package/server/routes/content-api/auth.js +73 -0
  41. package/server/routes/content-api/index.js +11 -0
  42. package/server/routes/content-api/permissions.js +9 -0
  43. package/server/routes/content-api/role.js +29 -0
  44. package/server/routes/content-api/user.js +61 -0
  45. package/server/routes/index.js +6 -0
  46. package/{config → server}/schema.graphql.js +96 -63
  47. package/server/services/index.js +15 -0
  48. package/{services → server/services}/jwt.js +12 -14
  49. package/server/services/providers.js +592 -0
  50. package/server/services/role.js +182 -0
  51. package/{services → server/services}/user.js +31 -34
  52. package/server/services/users-permissions.js +222 -0
  53. package/server/strategies/users-permissions.js +122 -0
  54. package/{utils → server/utils}/index.d.ts +6 -1
  55. package/server/utils/index.js +9 -0
  56. package/strapi-server.js +3 -0
  57. package/config/layout.js +0 -10
  58. package/config/policies/isAuthenticated.js +0 -9
  59. package/config/policies/permissions.js +0 -94
  60. package/config/request.json +0 -6
  61. package/config/routes.json +0 -381
  62. package/config/security.json +0 -5
  63. package/controllers/users-permissions.js +0 -271
  64. package/middlewares/users-permissions/defaults.json +0 -5
  65. package/middlewares/users-permissions/index.js +0 -40
  66. package/models/Permission.js +0 -7
  67. package/models/Permission.settings.json +0 -45
  68. package/models/Role.js +0 -7
  69. package/models/Role.settings.json +0 -43
  70. package/models/User.js +0 -7
  71. package/models/User.settings.json +0 -63
  72. package/services/providers.js +0 -598
  73. package/services/users-permissions.js +0 -430
  74. package/utils/index.js +0 -11
package/config/layout.js DELETED
@@ -1,10 +0,0 @@
1
- 'use strict';
2
-
3
- module.exports = {
4
- user: {
5
- actions: {
6
- create: 'User.create', // Use the User plugin's controller.
7
- update: 'User.update',
8
- },
9
- },
10
- };
@@ -1,9 +0,0 @@
1
- 'use strict';
2
-
3
- module.exports = async (ctx, next) => {
4
- if (!ctx.state.user) {
5
- return ctx.unauthorized();
6
- }
7
-
8
- await next();
9
- };
@@ -1,94 +0,0 @@
1
- 'use strict';
2
-
3
- const _ = require('lodash');
4
- const { getService } = require('../../utils');
5
-
6
- module.exports = async (ctx, next) => {
7
- let role;
8
-
9
- if (ctx.state.user) {
10
- // request is already authenticated in a different way
11
- return next();
12
- }
13
-
14
- if (ctx.request && ctx.request.header && ctx.request.header.authorization) {
15
- try {
16
- const { id } = await getService('jwt').getToken(ctx);
17
-
18
- if (id === undefined) {
19
- throw new Error('Invalid token: Token did not contain required fields');
20
- }
21
-
22
- // fetch authenticated user
23
- ctx.state.user = await getService('user').fetchAuthenticatedUser(id);
24
- } catch (err) {
25
- return handleErrors(ctx, err, 'unauthorized');
26
- }
27
-
28
- if (!ctx.state.user) {
29
- return handleErrors(ctx, 'User Not Found', 'unauthorized');
30
- }
31
-
32
- role = ctx.state.user.role;
33
-
34
- if (role.type === 'root') {
35
- return await next();
36
- }
37
-
38
- const store = await strapi.store({
39
- environment: '',
40
- type: 'plugin',
41
- name: 'users-permissions',
42
- });
43
-
44
- if (
45
- _.get(await store.get({ key: 'advanced' }), 'email_confirmation') &&
46
- !ctx.state.user.confirmed
47
- ) {
48
- return handleErrors(ctx, 'Your account email is not confirmed.', 'unauthorized');
49
- }
50
-
51
- if (ctx.state.user.blocked) {
52
- return handleErrors(
53
- ctx,
54
- 'Your account has been blocked by the administrator.',
55
- 'unauthorized'
56
- );
57
- }
58
- }
59
-
60
- // Retrieve `public` role.
61
- if (!role) {
62
- role = await strapi
63
- .query('plugins::users-permissions.role')
64
- .findOne({ where: { type: 'public' } });
65
- }
66
-
67
- const route = ctx.request.route;
68
-
69
- const permission = await strapi.query('plugins::users-permissions.permission').findOne({
70
- where: {
71
- role: { id: role.id },
72
- type: route.plugin || 'application',
73
- controller: route.controller,
74
- action: route.action,
75
- enabled: true,
76
- },
77
- });
78
-
79
- if (!permission) {
80
- return handleErrors(ctx, undefined, 'forbidden');
81
- }
82
-
83
- // Execute the policies.
84
- if (permission.policy) {
85
- return await strapi.plugins['users-permissions'].config.policies[permission.policy](ctx, next);
86
- }
87
-
88
- // Execute the action.
89
- await next();
90
- };
91
-
92
- const handleErrors = (ctx, err = undefined, type) => {
93
- throw strapi.errors[type](err);
94
- };
@@ -1,6 +0,0 @@
1
- {
2
- "ratelimit": {
3
- "interval": 60000,
4
- "max": 10
5
- }
6
- }
@@ -1,381 +0,0 @@
1
- {
2
- "routes": [
3
- {
4
- "method": "GET",
5
- "path": "/",
6
- "handler": "users-permissions.index",
7
- "config": {
8
- "policies": []
9
- }
10
- },
11
- {
12
- "method": "GET",
13
- "path": "/search/:id",
14
- "handler": "users-permissions.searchUsers",
15
- "config": {
16
- "policies": [],
17
- "description": "Search for users",
18
- "tag": {
19
- "plugin": "users-permissions",
20
- "name": "User",
21
- "actionType": "find"
22
- }
23
- }
24
- },
25
- {
26
- "method": "GET",
27
- "path": "/policies",
28
- "handler": "users-permissions.getPolicies",
29
- "config": {
30
- "policies": []
31
- }
32
- },
33
- {
34
- "method": "GET",
35
- "path": "/roles/:id",
36
- "handler": "users-permissions.getRole",
37
- "config": {
38
- "policies": [["admin::hasPermissions", ["plugins::users-permissions.roles.read"]]],
39
- "description": "Retrieve a role depending on its id",
40
- "tag": {
41
- "plugin": "users-permissions",
42
- "name": "Role",
43
- "actionType": "findOne"
44
- }
45
- }
46
- },
47
- {
48
- "method": "GET",
49
- "path": "/roles",
50
- "handler": "users-permissions.getRoles",
51
- "config": {
52
- "policies": [["admin::hasPermissions", ["plugins::users-permissions.roles.read"]]],
53
- "description": "Retrieve all role documents",
54
- "tag": {
55
- "plugin": "users-permissions",
56
- "name": "Role",
57
- "actionType": "find"
58
- }
59
- }
60
- },
61
- {
62
- "method": "GET",
63
- "path": "/routes",
64
- "handler": "users-permissions.getRoutes",
65
- "config": {
66
- "policies": []
67
- }
68
- },
69
- {
70
- "method": "GET",
71
- "path": "/email-templates",
72
- "handler": "users-permissions.getEmailTemplate",
73
- "config": {
74
- "policies": [["admin::hasPermissions", ["plugins::users-permissions.email-templates.read"]]]
75
- }
76
- },
77
- {
78
- "method": "PUT",
79
- "path": "/email-templates",
80
- "handler": "users-permissions.updateEmailTemplate",
81
- "config": {
82
- "policies": [
83
- ["admin::hasPermissions", ["plugins::users-permissions.email-templates.update"]]
84
- ]
85
- }
86
- },
87
- {
88
- "method": "GET",
89
- "path": "/advanced",
90
- "handler": "users-permissions.getAdvancedSettings",
91
- "config": {
92
- "policies": [
93
- ["admin::hasPermissions", ["plugins::users-permissions.advanced-settings.read"]]
94
- ]
95
- }
96
- },
97
- {
98
- "method": "PUT",
99
- "path": "/advanced",
100
- "handler": "users-permissions.updateAdvancedSettings",
101
- "config": {
102
- "policies": [
103
- ["admin::hasPermissions", ["plugins::users-permissions.advanced-settings.update"]]
104
- ]
105
- }
106
- },
107
- {
108
- "method": "GET",
109
- "path": "/permissions",
110
- "handler": "users-permissions.getPermissions",
111
- "config": {
112
- "policies": []
113
- }
114
- },
115
- {
116
- "method": "GET",
117
- "path": "/providers",
118
- "handler": "users-permissions.getProviders",
119
- "config": {
120
- "policies": [["admin::hasPermissions", ["plugins::users-permissions.providers.read"]]]
121
- }
122
- },
123
-
124
- {
125
- "method": "PUT",
126
- "path": "/providers",
127
- "handler": "users-permissions.updateProviders",
128
- "config": {
129
- "policies": [["admin::hasPermissions", ["plugins::users-permissions.providers.update"]]]
130
- }
131
- },
132
- {
133
- "method": "POST",
134
- "path": "/roles",
135
- "handler": "users-permissions.createRole",
136
- "config": {
137
- "policies": [["admin::hasPermissions", ["plugins::users-permissions.roles.create"]]],
138
- "description": "Create a new role",
139
- "tag": {
140
- "plugin": "users-permissions",
141
- "name": "Role",
142
- "actionType": "create"
143
- }
144
- }
145
- },
146
- {
147
- "method": "PUT",
148
- "path": "/roles/:role",
149
- "handler": "users-permissions.updateRole",
150
- "config": {
151
- "policies": [["admin::hasPermissions", ["plugins::users-permissions.roles.update"]]],
152
- "description": "Update a role",
153
- "tag": {
154
- "plugin": "users-permissions",
155
- "name": "Role",
156
- "actionType": "update"
157
- }
158
- }
159
- },
160
- {
161
- "method": "DELETE",
162
- "path": "/roles/:role",
163
- "handler": "users-permissions.deleteRole",
164
- "config": {
165
- "policies": [["admin::hasPermissions", ["plugins::users-permissions.roles.delete"]]],
166
- "description": "Delete a role",
167
- "tag": {
168
- "plugin": "users-permissions",
169
- "name": "Role",
170
- "actionType": "destroy"
171
- }
172
- }
173
- },
174
- {
175
- "method": "GET",
176
- "path": "/connect/*",
177
- "handler": "Auth.connect",
178
- "config": {
179
- "policies": ["plugins::users-permissions.ratelimit"],
180
- "prefix": "",
181
- "description": "Connect a provider",
182
- "tag": {
183
- "plugin": "users-permissions",
184
- "name": "User"
185
- }
186
- }
187
- },
188
- {
189
- "method": "POST",
190
- "path": "/auth/local",
191
- "handler": "Auth.callback",
192
- "config": {
193
- "policies": ["plugins::users-permissions.ratelimit"],
194
- "prefix": "",
195
- "description": "Login a user using the identifiers email and password",
196
- "tag": {
197
- "plugin": "users-permissions",
198
- "name": "User"
199
- }
200
- }
201
- },
202
- {
203
- "method": "POST",
204
- "path": "/auth/local/register",
205
- "handler": "Auth.register",
206
- "config": {
207
- "policies": ["plugins::users-permissions.ratelimit"],
208
- "prefix": "",
209
- "description": "Register a new user with the default role",
210
- "tag": {
211
- "plugin": "users-permissions",
212
- "name": "User",
213
- "actionType": "create"
214
- }
215
- }
216
- },
217
- {
218
- "method": "GET",
219
- "path": "/auth/:provider/callback",
220
- "handler": "Auth.callback",
221
- "config": {
222
- "policies": [],
223
- "prefix": "",
224
- "description": "Successfull redirection after approving a provider",
225
- "tag": {
226
- "plugin": "users-permissions",
227
- "name": "User"
228
- }
229
- }
230
- },
231
- {
232
- "method": "POST",
233
- "path": "/auth/forgot-password",
234
- "handler": "Auth.forgotPassword",
235
- "config": {
236
- "policies": ["plugins::users-permissions.ratelimit"],
237
- "prefix": "",
238
- "description": "Send the reset password email link",
239
- "tag": {
240
- "plugin": "users-permissions",
241
- "name": "User"
242
- }
243
- }
244
- },
245
- {
246
- "method": "POST",
247
- "path": "/auth/reset-password",
248
- "handler": "Auth.resetPassword",
249
- "config": {
250
- "policies": ["plugins::users-permissions.ratelimit"],
251
- "prefix": "",
252
- "description": "Reset user password with a code (resetToken)",
253
- "tag": {
254
- "plugin": "users-permissions",
255
- "name": "User"
256
- }
257
- }
258
- },
259
- {
260
- "method": "GET",
261
- "path": "/auth/email-confirmation",
262
- "handler": "Auth.emailConfirmation",
263
- "config": {
264
- "policies": [],
265
- "prefix": "",
266
- "description": "Validate a user account",
267
- "tag": {
268
- "plugin": "users-permissions",
269
- "name": "User"
270
- }
271
- }
272
- },
273
- {
274
- "method": "POST",
275
- "path": "/auth/send-email-confirmation",
276
- "handler": "Auth.sendEmailConfirmation",
277
- "config": {
278
- "policies": [],
279
- "prefix": "",
280
- "description": "Send a confirmation email to user",
281
- "tag": {
282
- "plugin": "users-permissions",
283
- "name": "User"
284
- }
285
- }
286
- },
287
- {
288
- "method": "GET",
289
- "path": "/users/count",
290
- "handler": "User.count",
291
- "config": {
292
- "prefix": "",
293
- "policies": []
294
- }
295
- },
296
- {
297
- "method": "GET",
298
- "path": "/users",
299
- "handler": "User.find",
300
- "config": {
301
- "policies": [],
302
- "prefix": "",
303
- "description": "Retrieve all user documents",
304
- "tag": {
305
- "plugin": "users-permissions",
306
- "name": "User",
307
- "actionType": "find"
308
- }
309
- }
310
- },
311
- {
312
- "method": "GET",
313
- "path": "/users/me",
314
- "handler": "User.me",
315
- "config": {
316
- "policies": [],
317
- "prefix": "",
318
- "description": "Retrieve the logged in user information",
319
- "tag": {
320
- "plugin": "users-permissions",
321
- "name": "User",
322
- "actionType": "findOne"
323
- }
324
- }
325
- },
326
- {
327
- "method": "GET",
328
- "path": "/users/:id",
329
- "handler": "User.findOne",
330
- "config": {
331
- "policies": [],
332
- "prefix": "",
333
- "description": "Retrieve a single user depending on his id",
334
- "tag": {
335
- "plugin": "users-permissions",
336
- "name": "User",
337
- "actionType": "findOne"
338
- }
339
- }
340
- },
341
- {
342
- "method": "POST",
343
- "path": "/users",
344
- "handler": "User.create",
345
- "config": {
346
- "policies": [],
347
- "prefix": ""
348
- }
349
- },
350
- {
351
- "method": "PUT",
352
- "path": "/users/:id",
353
- "handler": "User.update",
354
- "config": {
355
- "policies": [],
356
- "prefix": "",
357
- "description": "Update an existing user",
358
- "tag": {
359
- "plugin": "users-permissions",
360
- "name": "User",
361
- "actionType": "update"
362
- }
363
- }
364
- },
365
- {
366
- "method": "DELETE",
367
- "path": "/users/:id",
368
- "handler": "User.destroy",
369
- "config": {
370
- "policies": [],
371
- "prefix": "",
372
- "description": "Delete an existing user",
373
- "tag": {
374
- "plugin": "users-permissions",
375
- "name": "User",
376
- "actionType": "destroy"
377
- }
378
- }
379
- }
380
- ]
381
- }
@@ -1,5 +0,0 @@
1
- {
2
- "jwt": {
3
- "expiresIn": "30d"
4
- }
5
- }