-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathauth.controller.js
64 lines (55 loc) · 2.21 KB
/
auth.controller.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
//Nombre : auth.controller.js
//Autor : Camila Jimena Vargas Noriega
//Asignatura : Ingeniería y Desarrollo en la Web
//Práctica : Implementación de una solución basada en una aplicación web II
//Docente : Octavio Aguirre Lozano
//importamos modelo del user
import User from '../models/User'
// importamos jwt
import jwt from 'jsonwebtoken'
// importamos config para SECRET
import config from '../config'
//importamos modelo del rOle
import Role from '../models/Role'
// para el registro del nuevo usuario
export const signUp = async (req,res) => {
//parametros
const {nombreU, correo, password, roles}= req.body;
const newUser = new User({
nombreU,
correo,
password: await User.encryptPassword(password)
})
//definir rol en especifico
if (roles){
const foundRoles = await Role.find({nombreR: {$in: roles}})
newUser.roles = foundRoles.map(role => role._id)
} else {
//caso no se defina rol--> default sera user (en lugar de admin y visitante)
const role = await Role.findOne({nombreR: 'user'})
newUser.roles = [role._id];
}
//evento asyncrono, esperamos creacion
const savedUser = await newUser.save();
console.log(savedUser)
// generar token
const token = jwt.sign({id: savedUser._id}, config.SECRET, {
expiresIn: 86400 // 24 horas
})
res.status(200).json({token})
}
// para realizar el login del usuario + restricciones
export const signIn = async (req,res) => {
//comprobacion por correo existente
const userFound = await User.findOne({correo: req.body.correo}).populate("roles");
if (!userFound) return res.status(400).json({message: "Usuario no encontrado"})
// comprobacion por password
const matchPassword = await User.comparePassword(req.body.password, userFound.password)
if (!matchPassword) return res.status(401).json({token: null, message: 'Contraseña Incorrecta'})
// generacion de token
const token = jwt.sign({id: userFound._id}, config.SECRET, {
expiresIn: 86400 // 24 horas
})
res.json({token})
res.render('proyectos');
}