From 1027b19a499ad47e812b54eced7f40c0ba1b769e Mon Sep 17 00:00:00 2001 From: gaba Date: Thu, 12 Jan 2017 14:43:36 -0800 Subject: [PATCH] Added regex to look for the field that is duplicated. Not sure if there is a better way to do it. --- client/coral-framework/translations.json | 7 ++++--- errors.js | 9 +++++---- models/user.js | 6 +++++- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/client/coral-framework/translations.json b/client/coral-framework/translations.json index 8015d71e5..5bf9b40a9 100644 --- a/client/coral-framework/translations.json +++ b/client/coral-framework/translations.json @@ -14,7 +14,8 @@ "PASSWORD_REQUIRED": "Must input a password", "PASSWORD_LENGTH": "Password is too short", "EMAIL_IN_USE": "Email address already in use", - "EMAIL_DISPLAYNAME_IN_USE": "Email address or display name already in use", + "EMAIL_DISPLAY_NAME_IN_USE": "Email address or display name already in use", + "DISPLAYNAME_IN_USE": "Display name already in use", "DISPLAY_NAME_REQUIRED": "Must input a display name", "NO_SPECIAL_CHARACTERS": "Display names can contain letters, numbers and _ only", "PROFANITY_ERROR": "Display names must not contain profanity. Please contact the administrator if you believe this to be in error." @@ -31,12 +32,12 @@ "displayName": "Los nombres pueden contener letras, números y _", "confirmPassword": "Las contraseñas no coinciden", "emailPasswordError": "Email y/o contraseña incorrecta.", - "emailInUse": "Correo electronico en uso.", - "emailORusernameInUse": "Correo o Nombre en uso.", "EMAIL_REQUIRED": "Se requiere una dirección de correo electrónico", "PASSWORD_REQUIRED": "Debe ingresar una contraseña", "PASSWORD_LENGTH": "La contraseña es muy corta", "EMAIL_IN_USE": "La dirección de correo electrónico se encuentra en uso", + "EMAIL_DISPLAY_NAME_IN_USE": "Correo o Nombre en uso.", + "DISPLAYNAME_IN_USE": "Nombre en uso.", "DISPLAY_NAME_REQUIRED": "Debe ingresar un nombre", "NO_SPECIAL_CHARACTERS": "Los nombres pueden contener letras, números y _", "PROFANITY_ERROR": "Los nombres no pueden contener blasfemias. Por favor contacte al administrador si cree que esto es un error" diff --git a/errors.js b/errors.js index 68509520d..0bd8711c6 100644 --- a/errors.js +++ b/errors.js @@ -15,9 +15,9 @@ const ErrEmailTaken = new Error('Email address already in use'); ErrEmailTaken.translation_key = 'EMAIL_IN_USE'; ErrEmailTaken.status = 400; -const ErrEmailDisplaynameTaken = new Error('Email or Display name already in use'); -ErrEmailDisplaynameTaken.translation_key = 'EMAIL_DISPLAYNAME_IN_USE'; -ErrEmailDisplaynameTaken.status = 400; +const ErrDisplayTaken = new Error('Display name already in use'); +ErrDisplayTaken.translation_key = 'DISPLAYNAME_IN_USE'; +ErrDisplayTaken.status = 400; const ErrSpecialChars = new Error('No special characters are allowed in a display name'); ErrSpecialChars.translation_key = 'NO_SPECIAL_CHARACTERS'; @@ -45,5 +45,6 @@ module.exports = { ErrEmailTaken, ErrSpecialChars, ErrMissingDisplay, - ErrContainsProfanity + ErrContainsProfanity, + ErrDisplayTaken }; diff --git a/models/user.js b/models/user.js index 0b6241dfe..b0ead1c5a 100644 --- a/models/user.js +++ b/models/user.js @@ -383,7 +383,11 @@ UserService.createLocalUser = (email, password, displayName) => { user.save((err) => { if (err) { if (err.code === 11000) { - return reject(errors.ErrEmailDisplaynameTaken); + const regex = new RegExp('displayName', 'g'); + if (regex.exec(err.message)[0] === 'displayName') { + return reject(errors.ErrDisplayTaken); + } + return reject(errors.ErrEmailTaken); } return reject(err); }