From 36999861ca08080d0d16240effc706ad02bdaeeb Mon Sep 17 00:00:00 2001 From: Gabriel Ruschel <grc15@inf.ufpr.br> Date: Wed, 16 May 2018 11:11:37 -0300 Subject: [PATCH] Verification if the account already exists in the same (or another) plataform --- src/libs/routes/user.js | 98 +++++++++++++++++++++++++---------------- 1 file changed, 60 insertions(+), 38 deletions(-) diff --git a/src/libs/routes/user.js b/src/libs/routes/user.js index af123a58..7becb191 100644 --- a/src/libs/routes/user.js +++ b/src/libs/routes/user.js @@ -141,54 +141,76 @@ userApp.post('/', (req, res, next) => { admin: false }); - if (typeof req.body.password === 'undefined' || !req.body.password) { - res.statusCode = 400; - return res.json({errors: ["O campo senha é obrigatório"]}); - } else { - user.save((err) => { - if(err) { + let emailAddress = req.body.email; + let origin = req.body.origin; + User.findOne({email: emailAddress}, (err, find)=> { + if(err) { log.error(err); let errors = []; for(let errName in err.errors) { errors.push(err.errors[errName].message); } - log.error(errors); res.statusCode = 400; return res.json({err, errors}); - } + } else if (find) { + if (find.origin != origin) { + res.statusCode = 400; + return res.json({errors:["Esta conta já existe em outra plataforma"]}); + } else { + res.statusCode = 400; + return res.json({errors:["Esta conta já existe nesta plataforma"]}); + } + } else { + if (typeof req.body.password === 'undefined' || !req.body.password) { + res.statusCode = 400; + return res.json({errors: ["O campo senha é obrigatório"]}); + } else { + user.save((err) => { + if(err) { + log.error(err); + let errors = []; + for(let errName in err.errors) { + errors.push(err.errors[errName].message); + } + log.error(errors); + res.statusCode = 400; + return res.json({err, errors}); + } - // Create verification token - let verificationToken = new VerificationToken({ - userId: user._id - }); + // Create verification token + let verificationToken = new VerificationToken({ + userId: user._id + }); - verificationToken.createVerificationToken((err, token) => { - if(err) { - log.error(err); - return next(err); - } - let url = config.default.lde.url + '/verify'; - let text = `Olá, ${user.name}, seja bem vindo/a ao Laboratório de Dados Educacionais.\n\nClique neste link para confirmar sua conta: ${url}/${token}`; - // Send confirmation email - let mailOptions = { - to: `"${user.name} <${user.email}>"`, - subject: "Confirme seu cadastro - Laboratório de Dados Educacionais", - text - } - email(mailOptions, (err, info) => { - if(err) { - log.error(err); - res.json({msg: 'User created'}); - } - if(info) { - log.info(`Message ${info.messageId} sent: ${info.response}`); - log.info(`Usuário ${user.email} foi criado`); + verificationToken.createVerificationToken((err, token) => { + if(err) { + log.error(err); + return next(err); + } + let url = config.default.lde.url + '/verify'; + let text = `Olá, ${user.name}, seja bem vindo/a ao Laboratório de Dados Educacionais.\n\nClique neste link para confirmar sua conta: ${url}/${token}`; + // Send confirmation email + let mailOptions = { + to: `"${user.name} <${user.email}>"`, + subject: "Confirme seu cadastro - Laboratório de Dados Educacionais", + text + } + email(mailOptions, (err, info) => { + if(err) { + log.error(err); + res.json({msg: 'User created'}); + } + if(info) { + log.info(`Message ${info.messageId} sent: ${info.response}`); + log.info(`Usuário ${user.email} foi criado`); + } + res.json({msg: 'User created'}); + }); + }); + }); } - res.json({msg: 'User created'}); - }); - }); - }); - } + } + }) }); -- GitLab