@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
|
@@ -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
|
-
};
|