Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const User = require('../models/User');
- const router = require('express').Router();
- const Joi = require('@hapi/joi');
- const bcrypt = require('bcrypt');
- const jwt = require('jsonwebtoken');
- // Scheme para Registrar Usuario
- const schemeRegister = Joi.object({
- name: Joi.string().min(6).max(255).required(),
- email: Joi.string().min(6).max(255).required().email(),
- password: Joi.string().min(6).max(1024).required()
- });
- // Scheme para realizar el Login del Usuario
- const schemeLogin = Joi.object({
- email: Joi.string().min(6).max(255).required().email(),
- password: Joi.string().min(6).max(1024).required()
- });
- // Código para redirigir a página de registro
- router.get('/paginaRegistro', (request, response) =>
- {
- response.render("registrar");
- });
- // Código para redirigir a página de registro
- router.get('/paginaLogin', (request, response) =>
- {
- response.render("login");
- });
- // Código para logear a un usuario
- router.post('/login', async (request, response) =>
- {
- // Validaciones
- const { error } = schemeLogin.validate(request.body);
- if (error)
- return response.render("404", {
- error: error.details[0].message,
- mensaje: "Se ha producido un error"
- })
- // Verificamos si el usuario existe (su email)
- const user = await User.findOne({ email: request.body.email });
- if (!user)
- return response.render("404", {
- error: 'Usuario No Encontrado',
- mensaje: "Se ha producido un error"
- })
- // Verificar el password del usuario
- const validPassword = await bcrypt.compare(request.body.password, user.password);
- if (!validPassword)
- return response.render("404", {
- error: 'Contraseña no válida',
- mensaje: "Se ha producido un error"
- })
- // Creamos el Token
- const token = jwt.sign({
- name: user.name,
- id: user._id
- }, process.env.TOKEN_SECRET);
- response.render("exito", {
- error: null,
- mensaje: "Bienvenido"
- })
- // Validar los datos
- // Verificar que existe el usuario
- // Tomar la contraseña y comparar con la contraseña de la BD. Para ello tenemos que desencriptar la password que está en la bbdd
- // Si todo sale bien, mandamos un mensaje de bienvenida
- // Pongamos un Token
- }),
- // Método para registrar a un usuario. Lo conservan como API
- router.post('/register', async (request, response) =>
- {
- // Validación de la data que nos llega por el request
- const { error } = schemeRegister.validate(request.body);
- if (error) {
- return response.render("404", {
- error: error.details[0].message,
- mensaje: "Hay un error"
- })
- }
- // Verifico si existe un usuario con un email determinado
- const isEmailExist = await User.findOne({ email: request.body.email });
- if (isEmailExist) {
- return response.render("404", {
- error: "El usuario ya existe",
- mensaje: "Se ha producido un error"
- })
- }
- // Encriptación del password
- const salt = await bcrypt.genSalt(10);
- const password = await bcrypt.hash(request.body.password, salt);
- // Creación de nuestro usuario
- const user = new User(
- {
- name: request.body.name,
- email: request.body.email,
- password: password
- });
- try {
- const savedUser = await user.save();
- response.render("exito", {
- error: null,
- mensaje: "El registro se ha realizado con éxito"
- })
- } catch (error) {
- response.render("404", {
- error: error,
- mensaje: "Se ha producido un error"
- })
- }
- });
- module.exports = router;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement