@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.
Files changed (46) hide show
  1. package/admin/src/components/BoundRoute/index.js +23 -27
  2. package/admin/src/components/FormModal/Input/index.js +2 -2
  3. package/admin/src/components/FormModal/index.js +10 -5
  4. package/admin/src/components/Permissions/PermissionRow/CheckboxWrapper.js +1 -1
  5. package/admin/src/components/Permissions/PermissionRow/SubCategory.js +12 -10
  6. package/admin/src/components/Permissions/PermissionRow/index.js +1 -1
  7. package/admin/src/components/Permissions/index.js +12 -8
  8. package/admin/src/components/Policies/index.js +12 -9
  9. package/admin/src/components/UsersPermissions/index.js +12 -15
  10. package/admin/src/index.js +0 -8
  11. package/admin/src/pages/AdvancedSettings/index.js +13 -13
  12. package/admin/src/pages/EmailTemplates/components/EmailForm.js +10 -5
  13. package/admin/src/pages/EmailTemplates/components/EmailTable.js +16 -16
  14. package/admin/src/pages/EmailTemplates/index.js +3 -3
  15. package/admin/src/pages/Providers/index.js +21 -21
  16. package/admin/src/pages/Providers/utils/api.js +1 -1
  17. package/admin/src/pages/Roles/CreatePage/index.js +13 -13
  18. package/admin/src/pages/Roles/EditPage/index.js +23 -13
  19. package/admin/src/pages/Roles/ListPage/components/TableBody.js +14 -10
  20. package/admin/src/pages/Roles/ListPage/index.js +19 -25
  21. package/documentation/1.0.0/overrides/users-permissions-User.json +7 -7
  22. package/package.json +29 -30
  23. package/server/bootstrap/index.js +17 -17
  24. package/server/config.js +2 -2
  25. package/server/content-types/permission/index.js +3 -0
  26. package/server/content-types/role/index.js +3 -0
  27. package/server/controllers/auth.js +73 -215
  28. package/server/controllers/{user/admin.js → content-manager-user.js} +44 -75
  29. package/server/controllers/index.js +2 -0
  30. package/server/controllers/role.js +7 -7
  31. package/server/controllers/settings.js +5 -4
  32. package/server/controllers/user.js +118 -28
  33. package/server/controllers/validation/auth.js +29 -0
  34. package/server/controllers/validation/user.js +38 -0
  35. package/server/middlewares/rateLimit.js +1 -1
  36. package/server/routes/admin/role.js +5 -5
  37. package/server/routes/admin/settings.js +6 -6
  38. package/server/routes/content-api/auth.js +5 -7
  39. package/server/services/jwt.js +9 -17
  40. package/server/services/providers.js +13 -10
  41. package/server/services/role.js +5 -10
  42. package/server/services/user.js +8 -6
  43. package/server/services/users-permissions.js +56 -45
  44. package/server/strategies/users-permissions.js +23 -22
  45. package/admin/src/assets/images/logo.svg +0 -1
  46. package/server/controllers/user/api.js +0 -158
@@ -1,158 +0,0 @@
1
- 'use strict';
2
-
3
- const _ = require('lodash');
4
- const { sanitizeEntity } = require('@strapi/utils');
5
- const { getService } = require('../../utils');
6
-
7
- const sanitizeUser = user =>
8
- sanitizeEntity(user, {
9
- model: strapi.getModel('plugin::users-permissions.user'),
10
- });
11
-
12
- const formatError = error => [
13
- { messages: [{ id: error.id, message: error.message, field: error.field }] },
14
- ];
15
-
16
- module.exports = {
17
- /**
18
- * Create a/an user record.
19
- * @return {Object}
20
- */
21
- async create(ctx) {
22
- const advanced = await strapi
23
- .store({ type: 'plugin', name: 'users-permissions', key: 'advanced' })
24
- .get();
25
-
26
- const { email, username, password, role } = ctx.request.body;
27
-
28
- if (!email) return ctx.badRequest('missing.email');
29
- if (!username) return ctx.badRequest('missing.username');
30
- if (!password) return ctx.badRequest('missing.password');
31
-
32
- const userWithSameUsername = await strapi
33
- .query('plugin::users-permissions.user')
34
- .findOne({ where: { username } });
35
-
36
- if (userWithSameUsername) {
37
- return ctx.badRequest(
38
- null,
39
- formatError({
40
- id: 'Auth.form.error.username.taken',
41
- message: 'Username already taken.',
42
- field: ['username'],
43
- })
44
- );
45
- }
46
-
47
- if (advanced.unique_email) {
48
- const userWithSameEmail = await strapi
49
- .query('plugin::users-permissions.user')
50
- .findOne({ where: { email: email.toLowerCase() } });
51
-
52
- if (userWithSameEmail) {
53
- return ctx.badRequest(
54
- null,
55
-
56
- formatError({
57
- id: 'Auth.form.error.email.taken',
58
- message: 'Email already taken.',
59
- field: ['email'],
60
- })
61
- );
62
- }
63
- }
64
-
65
- const user = {
66
- ...ctx.request.body,
67
- provider: 'local',
68
- };
69
-
70
- user.email = _.toLower(user.email);
71
-
72
- if (!role) {
73
- const defaultRole = await strapi
74
- .query('plugin::users-permissions.role')
75
- .findOne({ where: { type: advanced.default_role } });
76
-
77
- user.role = defaultRole.id;
78
- }
79
-
80
- try {
81
- const data = await getService('user').add(user);
82
-
83
- ctx.created(sanitizeUser(data));
84
- } catch (error) {
85
- ctx.badRequest(null, formatError(error));
86
- }
87
- },
88
-
89
- /**
90
- * Update a/an user record.
91
- * @return {Object}
92
- */
93
- async update(ctx) {
94
- const advancedConfigs = await strapi
95
- .store({ type: 'plugin', name: 'users-permissions', key: 'advanced' })
96
- .get();
97
-
98
- const { id } = ctx.params;
99
- const { email, username, password } = ctx.request.body;
100
-
101
- const user = await getService('user').fetch({ id });
102
-
103
- if (_.has(ctx.request.body, 'email') && !email) {
104
- return ctx.badRequest('email.notNull');
105
- }
106
-
107
- if (_.has(ctx.request.body, 'username') && !username) {
108
- return ctx.badRequest('username.notNull');
109
- }
110
-
111
- if (_.has(ctx.request.body, 'password') && !password && user.provider === 'local') {
112
- return ctx.badRequest('password.notNull');
113
- }
114
-
115
- if (_.has(ctx.request.body, 'username')) {
116
- const userWithSameUsername = await strapi
117
- .query('plugin::users-permissions.user')
118
- .findOne({ where: { username } });
119
-
120
- if (userWithSameUsername && userWithSameUsername.id != id) {
121
- return ctx.badRequest(
122
- null,
123
- formatError({
124
- id: 'Auth.form.error.username.taken',
125
- message: 'username.alreadyTaken.',
126
- field: ['username'],
127
- })
128
- );
129
- }
130
- }
131
-
132
- if (_.has(ctx.request.body, 'email') && advancedConfigs.unique_email) {
133
- const userWithSameEmail = await strapi
134
- .query('plugin::users-permissions.user')
135
- .findOne({ where: { email: email.toLowerCase() } });
136
-
137
- if (userWithSameEmail && userWithSameEmail.id != id) {
138
- return ctx.badRequest(
139
- null,
140
- formatError({
141
- id: 'Auth.form.error.email.taken',
142
- message: 'Email already taken',
143
- field: ['email'],
144
- })
145
- );
146
- }
147
- ctx.request.body.email = ctx.request.body.email.toLowerCase();
148
- }
149
-
150
- let updateData = {
151
- ...ctx.request.body,
152
- };
153
-
154
- const data = await getService('user').edit({ id }, updateData);
155
-
156
- ctx.send(sanitizeUser(data));
157
- },
158
- };