Fix user update via API and content-type-builder

This commit is contained in:
Jim Laurie 2018-02-02 12:59:34 +01:00
parent f9a818e49c
commit a8c59f999a
2 changed files with 6 additions and 3 deletions

View File

@ -97,9 +97,9 @@ module.exports = {
update: async (ctx, next) => { update: async (ctx, next) => {
try { try {
if (strapi.plugins['users-permissions'].config.advanced.unique_email && ctx.request.body.email) { if (strapi.plugins['users-permissions'].config.advanced.unique_email && ctx.request.body.email) {
const user = await strapi.query('user', 'users-permissions').findOne({ email: ctx.request.body.email }); const users = await strapi.plugins['users-permissions'].services.user.fetchAll({ email: ctx.request.body.email });
if (user) { if (users && _.find(users, user => (user.id || user._id).toString() !== ctx.params.id)) {
return ctx.badRequest(null, ctx.request.admin ? [{ messages: [{ id: 'Auth.form.error.email.taken' }] }] : 'Email is already taken.'); return ctx.badRequest(null, ctx.request.admin ? [{ messages: [{ id: 'Auth.form.error.email.taken' }] }] : 'Email is already taken.');
} }
} }
@ -119,7 +119,7 @@ module.exports = {
email: ctx.request.body.email email: ctx.request.body.email
}); });
if (user.id !== ctx.params.id) { if ((user.id || user._id).toString() !== ctx.params.id) {
return ctx.badRequest(null, ctx.request.admin ? [{ messages: [{ id: 'Auth.form.error.email.taken' }] }] : 'Email is already taken.'); return ctx.badRequest(null, ctx.request.admin ? [{ messages: [{ id: 'Auth.form.error.email.taken' }] }] : 'Email is already taken.');
} }
} }

View File

@ -48,6 +48,9 @@ module.exports = {
// Use Content Manager business logic to handle relation. // Use Content Manager business logic to handle relation.
if (strapi.plugins['content-manager']) { if (strapi.plugins['content-manager']) {
params.model = 'user';
params.id = params._id;
return await strapi.plugins['content-manager'].services['contentmanager'].edit(params, values, 'users-permissions'); return await strapi.plugins['content-manager'].services['contentmanager'].edit(params, values, 'users-permissions');
} }