Commit 62e050a8 authored by Vytor Calixto's avatar Vytor Calixto 👾
Browse files

Página para verificar a conta

parent f1fdbbaf
<html>
<% include partials/head %>
<body>
<% include partials/basic-header %>
<section class="page-wrap">
<% if (message.length > 0) { %>
<div class="card margin"><%= message %></div>
<% } %>
<% if (ok) { %>
<div class="card">
Sua conta foi verificada! <a href="/">Voltar para a página inicial.</a>
</div>
<% } %>
</section>
<% include partials/footer %>
</body>
</html>
......@@ -25,7 +25,8 @@
},
"email": {
"user": "petcomputacaoufpr",
"password": ""
"password": "",
"host": "smtp.gmail.com"
}
}
}
......@@ -6,10 +6,13 @@ var libs = process.cwd() + '/libs/'
var config = require(libs + 'config')
var Usuario = require(libs + 'model/usuario')
var Client = require(libs + 'model/client')
var AccessToken = require(libs + 'model/accessToken')
var RefreshToken = require(libs + 'model/refreshToken')
var email = require(libs + 'email')
passport.use(new ClientPasswordStrategy(
function(clientId, clientSecret, done) {
......@@ -107,6 +110,7 @@ passport.use('local-signup', new LocalStrategy({
console.log('Internal error: %s', err.message)
return done(null, false, req.flash('signupMessage', 'Erro ao salvar o usuário: ' + err.message))
}
email.sendVerifyToUser(usuario, req.protocol, req.get('host'))
return done(null, usuario)
})
}
......
var email = require('emailjs')
var libs = process.cwd() + '/libs/'
var VerificationToken = require(libs + 'model/verificationToken')
var config = require(libs + 'config')
var server = email.server.connect({
user: config.get('default:email:user'),
password: process.env.EMAILPASSWORD || config.get('default:email:password'),
host: config.get('default:email:host'),
ssl: true
})
function sendVerifyToUser(usuario, protocol, host) {
console.log(server)
var verificationToken = new VerificationToken({
userId: usuario._id
})
verificationToken.createVerificationToken(function(err, token) {
if (err) {
console.log('Não foi possível criar o token')
return
}
var text = 'Olá, ' + usuario.nome + '. Clique neste link para validar sua conta: ' + protocol + '://' + host + '/v1/u/verify/' + token
var message = {
from: 'PET Computação UFPR <pet@inf.ufpr.br>',
to: usuario.nome + ' <' + usuario.email + '>',
subject: 'Farol - Confirmação de Conta',
text: text
}
server.send(message, function(err, message) {
console.log(err || message)
})
})
}
module.exports = {
sendVerifyToUser: function(usuario, protocol, host) {
sendVerifyToUser(usuario, protocol, host)
}
}
var express = require('express')
var passport = require('passport')
var router = express.Router()
var email = require('emailjs')
var libs = process.cwd() + '/libs/'
var db = require(libs + 'db/mongoose')
var Usuario = require(libs + 'model/usuario')
var VerificationToken = require(libs + 'model/verificationToken')
var role = require(libs + 'role')
var config = require(libs + 'config')
var server = email.server.connect({
user: config.get('default:email:user'),
password: process.env.EMAILPASSWORD || config.get('default:email:password'),
host: 'smtp.gmail.com',
ssl: true
})
var email = require(libs + 'email')
router.get('/', passport.authenticate('bearer', { session: false }), role.isModerador(), function(req, res) {
Usuario.find()
......@@ -48,26 +40,6 @@ router.get('/me', passport.authenticate('bearer', { session: false }), function(
})
})
router.get('/verify/:token', function(req, res) {
var token = req.params.token
VerificationToken.findOne({token: token}, function(err, vToken) {
if(err) {
console.log(err)
return res.json({error: 'Email verification failed'})
}
Usuario.findOne({_id: vToken.userId}, function(err, usuario) {
usuario.verificado = true
usuario.save(function(err) {
if(err) {
console.log(err)
return res.json({error: 'Email verification failed. Failed to update user'})
}
return res.json({status: 'OK'})
})
})
})
})
router.put('/me/edit', passport.authenticate('bearer', { session: false }), function(req, res) {
Usuario.findById(req.user.userId, function(err, usuario) {
if(!usuario) {
......@@ -135,26 +107,7 @@ router.post('/', function(req, res) {
usuario.save(function (err) {
if(!err) {
var verificationToken = new VerificationToken({
userId: usuario._id
})
verificationToken.createVerificationToken(function(err, token) {
if (err) {
console.log('Não foi possível criar o token')
}
var text = 'Olá, ' + usuario.nome + '. Clique neste link para validar sua conta: ' + req.protocol + '://' + req.get('host') + '/v1/u/verify/' + token
var message = {
from: 'PET Computação UFPR <pet@inf.ufpr.br>',
to: usuario.nome + ' <' + usuario.email + '>',
subject: 'Farol - Confirmação de Conta',
text: text
}
server.send(message, function(err, message) {
console.log(err || message)
})
})
email.sendVerifyToUser(usuario, req.protocol, req.get('host'))
return res.json({status: 'OK', usuario:usuario})
} else {
if(err.name === 'ValidationError') {
......
......@@ -70,6 +70,29 @@ router.post('/signup', passport.authenticate('local-signup', {
failureFlash: true
}))
router.get('/verify/:token', function(req, res) {
var token = req.params.token
var ok = true
VerificationToken.findOne({token: token}, function(err, vToken) {
if(err) {
console.log(err)
req.flash('verifyMessage', 'A verificação falhou. Entre em contato com um administrador através do e-mail pet@inf.ufpr.br')
ok = false
}
Usuario.findOne({_id: vToken.userId}, function(err, usuario) {
usuario.verificado = true
usuario.save(function(err) {
if(err) {
console.log(err)
ok = false
req.flash('verifyMessage', 'A verificação falhou. Entre em contato com um administrador através do e-mail pet@inf.ufpr.br')
}
})
})
res.render('verify', {message: req.flash('verifyMessage'), ok: ok})
})
})
router.get('/conta', role.isLoggedIn(), function(req, res) {
res.render('conta', {user: req.user})
})
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment