From b713648d4c0c88927735f70b1b709667e85ac65b Mon Sep 17 00:00:00 2001 From: soupette Date: Tue, 24 Apr 2018 10:13:09 +0200 Subject: [PATCH 1/2] Fixes #763 --- .../admin/src/containers/EditPage/saga.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/EditPage/saga.js b/packages/strapi-plugin-content-manager/admin/src/containers/EditPage/saga.js index b68f1747f9..0295cb4eef 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/EditPage/saga.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/EditPage/saga.js @@ -122,7 +122,11 @@ export function* submit() { if (isArray(err.response.payload.message)) { const errors = err.response.payload.message.reduce((acc, current) => { const error = current.messages.reduce((acc, current) => { - acc.errorMessage = current.id; + if (source === 'users-permissions' && !get(err.response.payload.message, ['0', 'messages', '0', 'field', '0'])) { + acc.id = `users-permissions.${current.id}`; + } else { + acc.errorMessage = current.id; + } return acc; }, { id: 'components.Input.error.custom-error', errorMessage: '' }); @@ -131,7 +135,7 @@ export function* submit() { return acc; }, []); - const name = get(err.response.payload.message, ['0', 'messages', '0', 'field']); + const name = get(err.response.payload.message, ['0', 'messages', '0', 'field', '0'], source === 'users-permissions' ? 'email' : ''); yield put(setFormErrors([{ name, errors }])); } From 6b3e3d472f9ae14e6a86c69dc34358ef1852d121 Mon Sep 17 00:00:00 2001 From: soupette Date: Tue, 24 Apr 2018 11:45:09 +0200 Subject: [PATCH 2/2] Improve errors notifications --- .../admin/src/containers/EditPage/saga.js | 17 +++++++++++------ .../controllers/User.js | 6 +++--- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/packages/strapi-plugin-content-manager/admin/src/containers/EditPage/saga.js b/packages/strapi-plugin-content-manager/admin/src/containers/EditPage/saga.js index 0295cb4eef..b5cfa4c9f2 100644 --- a/packages/strapi-plugin-content-manager/admin/src/containers/EditPage/saga.js +++ b/packages/strapi-plugin-content-manager/admin/src/containers/EditPage/saga.js @@ -1,5 +1,5 @@ import { LOCATION_CHANGE } from 'react-router-redux'; -import { findIndex, get, isArray, isEmpty, isNumber, isString, map } from 'lodash'; +import { findIndex, get, isArray, isEmpty, includes, isNumber, isString, map } from 'lodash'; import { call, cancel, @@ -64,6 +64,7 @@ export function* submit() { const isCreating = yield select(makeSelectIsCreating()); const record = yield select(makeSelectRecord()); const source = yield select(makeSelectSource()); + let shouldAddTranslationSuffix = false; try { // Show button loader @@ -122,11 +123,13 @@ export function* submit() { if (isArray(err.response.payload.message)) { const errors = err.response.payload.message.reduce((acc, current) => { const error = current.messages.reduce((acc, current) => { - if (source === 'users-permissions' && !get(err.response.payload.message, ['0', 'messages', '0', 'field', '0'])) { + if (includes(current.id, 'Auth')) { acc.id = `users-permissions.${current.id}`; - } else { - acc.errorMessage = current.id; + shouldAddTranslationSuffix = true; + + return acc; } + acc.errorMessage = current.id; return acc; }, { id: 'components.Input.error.custom-error', errorMessage: '' }); @@ -135,11 +138,13 @@ export function* submit() { return acc; }, []); - const name = get(err.response.payload.message, ['0', 'messages', '0', 'field', '0'], source === 'users-permissions' ? 'email' : ''); + const name = get(err.response.payload.message, ['0', 'messages', '0', 'field', '0']); yield put(setFormErrors([{ name, errors }])); } - strapi.notification.error(isCreating ? 'content-manager.error.record.create' : 'content-manager.error.record.update'); + + const notifErrorPrefix = source === 'users-permissions' && shouldAddTranslationSuffix ? 'users-permissions.' : ''; + strapi.notification.error(`${notifErrorPrefix}${get(err.response, ['payload', 'message', '0', 'messages', '0', 'id'], isCreating ? 'content-manager.error.record.create' : 'content-manager.error.record.update')}`); } finally { yield put(unsetLoader()); } diff --git a/packages/strapi-plugin-users-permissions/controllers/User.js b/packages/strapi-plugin-users-permissions/controllers/User.js index 12055f0120..223df86581 100644 --- a/packages/strapi-plugin-users-permissions/controllers/User.js +++ b/packages/strapi-plugin-users-permissions/controllers/User.js @@ -79,7 +79,7 @@ module.exports = { const user = await strapi.query('user', 'users-permissions').findOne({ email: ctx.request.body.email }); if (user) { - 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', field: ['email'] }] }] : 'Email is already taken.'); } } @@ -111,7 +111,7 @@ module.exports = { const users = await strapi.plugins['users-permissions'].services.user.fetchAll({ email: ctx.request.body.email }); 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', field: ['email'] }] }] : 'Email is already taken.'); } } @@ -131,7 +131,7 @@ module.exports = { }); if (user !== null && (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', field: ['email'] }] }] : 'Email is already taken.'); } }