From a0a558041e516151a3fca6ffeb20d13b8dab1c7a Mon Sep 17 00:00:00 2001 From: Lucas Gabriel Lima <lgl15@inf.ufpr.br> Date: Wed, 11 Jan 2017 10:35:17 -0200 Subject: [PATCH 1/6] add validators to model --- src/libs/models/user.js | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/libs/models/user.js b/src/libs/models/user.js index 8c4f92a2..b334e87f 100644 --- a/src/libs/models/user.js +++ b/src/libs/models/user.js @@ -8,48 +8,48 @@ const Schema = mongoose.Schema; var UserSchema = new Schema({ email: { type: String, - unique: true, - required: true + unique: true, + required: [true, 'O campo Email é obrigatório.'] }, password: { type: String, - required: true + required: [true, 'O campo Senha é obrigatório.'] }, name: { type: String, - required: true + required: [true, 'O campo Nome é obrigatório.'] }, cpf:{ type: String, - unique: true, - required: true + unique: [true, 'O CPF informado já está cadastrado.'], + required: [true, 'O campo CPF é obrigatório.'] }, schooling: { type: String, - required: true + required: [true, 'O campo Escolaridade é obrigatório.'] }, course: { type: String, }, segment: { type: String, - required: true + required: [true, 'O campo Segmento é obrigatório.'] }, role: { type: String, - required: true + required: [true, 'O campo Função é obrigatório.'] }, institution_name: { type: String, - required: true + required: [true, 'O campo Instituição em que trabalha é obrigatório.'] }, state: { type: String, - required: true + required: [true, 'O campo Estado é obrigatório.'] }, city: { type: String, - required: true + required: [true, 'O campo Cidade é obrigatório.'] }, receive_emails: { type: Boolean -- GitLab From 32fbeca7dd923999417b6258cefd2f09a7d0180f Mon Sep 17 00:00:00 2001 From: Lucas Gabriel Lima <lgl15@inf.ufpr.br> Date: Fri, 13 Jan 2017 10:30:58 -0200 Subject: [PATCH 2/6] small fix on model validation --- src/libs/models/user.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libs/models/user.js b/src/libs/models/user.js index b334e87f..572e5239 100644 --- a/src/libs/models/user.js +++ b/src/libs/models/user.js @@ -8,7 +8,7 @@ const Schema = mongoose.Schema; var UserSchema = new Schema({ email: { type: String, - unique: true, + unique: true, required: [true, 'O campo Email é obrigatório.'] }, password: { @@ -21,7 +21,7 @@ var UserSchema = new Schema({ }, cpf:{ type: String, - unique: [true, 'O CPF informado já está cadastrado.'], + unique: true, required: [true, 'O campo CPF é obrigatório.'] }, schooling: { -- GitLab From b438056687d1f8c64adf56ce6e4ea083b724035b Mon Sep 17 00:00:00 2001 From: Lucas Gabriel Lima <lgl15@inf.ufpr.br> Date: Fri, 13 Jan 2017 10:31:25 -0200 Subject: [PATCH 3/6] moved validations from route to model --- src/libs/routes/user.js | 93 +++++++---------------------------------- 1 file changed, 16 insertions(+), 77 deletions(-) diff --git a/src/libs/routes/user.js b/src/libs/routes/user.js index eb1732b1..f29766ae 100644 --- a/src/libs/routes/user.js +++ b/src/libs/routes/user.js @@ -21,83 +21,17 @@ function emailSyntax(email) { } userApp.post('/', (req, res, next) => { - if (!req.body.email) { - res.json({success: false, msg: 'O campo Email é obrigatório.'}); - } else { - next(); - } - -}, (req, res, next) => { - if (!req.body.password) { - res.json({success: false, msg: 'O campo Senha é obrigatório.'}); - } else { - next(); - } - -}, (req, res, next) => { - if(!emailSyntax(req.body.email)){ - res.json({success: false, msg: 'O email informado é inválido.'}); - } else { - next(); - } - -}, (req, res, next) => { - if (!req.body.name) { - res.json({success: false, msg: 'O campo Nome é obrigatório.'}); - } else { - next(); - } - -}, (req, res, next) => { - if (!req.body.cpf) { - res.json({success: false, msg: 'O campo CPF é obrigatório.'}); - } else { - next(); - } - -}, (req, res, next) => { - if (!req.body.schooling) { - res.json({success: false, msg: 'O campo Escolaridade é obrigatório.'}); - } else { - next(); - } - -}, (req, res, next) => { - if (!req.body.segment) { - res.json({success: false, msg: 'O campo Segmento é obrigatório.'}); - } else { - next(); - } - -}, (req, res, next) => { - if (!req.body.role) { - res.json({success: false, msg: 'O campo Função é obrigatório.'}); - } else { - next(); - } - -}, (req, res, next) => { - if (!req.body.institution_name) { - res.json({success: false, msg: 'O campo Instituição em que trabalha é obrigatório.'}); - } else { - next(); - } - -}, (req, res, next) => { - if (!req.body.city) { - res.json({success: false, msg: 'O campo Cidade é obrigatório.'}); - } else { - next(); - } - -}, (req, res, next) => { - if (!req.body.state) { - res.json({success: false, msg: 'O campo Estado é obrigatório.'}); + if(req.body.email){ + if(!emailSyntax(req.body.email)){ + res.json({success: false, msg: 'O email informado é inválido.'}); + } else { + next(); + } } else { next(); } - -}, (req, res, next) => { +}, + (req, res, next) => { User.count({'email': req.body.email}, function(err, count){ if (err){ log.error('MongoDB error: ' + err); @@ -141,9 +75,14 @@ userApp.post('/', (req, res, next) => { // save the user newUser.save((err) => { - if (err) { - res.json({success: false, msg: 'Um erro ocorreu no banco de dados.'}); - } else { + if (err){ + let errMsg = []; + for (var e in err.errors) { + errMsg.push(err.errors[`${e}`].message); + } + res.json({success: false, msg: errMsg[0]}); + } + else { res.json({success: true, msg: 'Usuário cadastrado com sucesso!'}); } }); -- GitLab From f35eee596b5377946fe7d5ee6cddfea9494c5427 Mon Sep 17 00:00:00 2001 From: Lucas Gabriel Lima <lgl15@inf.ufpr.br> Date: Mon, 16 Jan 2017 09:26:23 -0200 Subject: [PATCH 4/6] fix formating --- src/libs/routes/user.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/libs/routes/user.js b/src/libs/routes/user.js index f29766ae..c8320c0d 100644 --- a/src/libs/routes/user.js +++ b/src/libs/routes/user.js @@ -76,11 +76,20 @@ userApp.post('/', (req, res, next) => { // save the user newUser.save((err) => { if (err){ - let errMsg = []; + let errArray = []; + let errMsg = ''; for (var e in err.errors) { - errMsg.push(err.errors[`${e}`].message); + errArray.push(err.errors[`${e}`].message); } - res.json({success: false, msg: errMsg[0]}); + for (var i = 0; i < errArray.length; i++) { + if(i > 0){ + errMsg = '\n' + errMsg + errArray[i]; + } + else{ + errMsg = errMsg + errArray[i]; + } + } + res.json({success: false, msg: errMsg}); } else { res.json({success: true, msg: 'Usuário cadastrado com sucesso!'}); -- GitLab From 5fcee9e5981749f6ca8f5bf59200e67e47f404bc Mon Sep 17 00:00:00 2001 From: Vytor Calixto <vytorcalixto@gmail.com> Date: Mon, 16 Jan 2017 09:52:01 -0200 Subject: [PATCH 5/6] :green_heart: Change code coverage threshold in gulpfile --- gulpfile.babel.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gulpfile.babel.js b/gulpfile.babel.js index b2758b0a..7b74ae0e 100644 --- a/gulpfile.babel.js +++ b/gulpfile.babel.js @@ -78,7 +78,12 @@ gulp.task('test', ['pre-test'], () => { .pipe(istanbul.writeReports()) .pipe(istanbul.enforceThresholds({ thresholds: { - global: 80 + global: { + statements: 80, + branches: 75, + lines: 80, + functions: 80 + } } })) .on('error', () => { -- GitLab From 0ba9c947d0d237f2a576f923c29e212ec90eec82 Mon Sep 17 00:00:00 2001 From: Vytor Calixto <vytorcalixto@gmail.com> Date: Tue, 17 Jan 2017 09:39:32 -0200 Subject: [PATCH 6/6] :bug: Fix a bug with bcrypt-nodejs --- src/libs/models/user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/models/user.js b/src/libs/models/user.js index 59786097..9b9c2fa5 100644 --- a/src/libs/models/user.js +++ b/src/libs/models/user.js @@ -64,7 +64,7 @@ UserSchema.pre('save', function (next) { if (err) { return next(err); } - bcrypt.hash(user.password, salt, function (err, hash) { + bcrypt.hash(user.password, salt, null, function (err, hash) { if (err) { return next(err); } -- GitLab