Skip to content
Snippets Groups Projects
Select Git revision
  • 39ff8c068dd0d7529c8341991a1b72c0bfd5dc9e
  • master default protected
2 results

AuthenticationController.js

Blame
  • AuthenticationController.js 1.58 KiB
    const {User}= require('../models')
    const jwt = require('jsonwebtoken')
    const config = require('../config/config')
    
    function jwtSignUser (user) {
        const ONE_WEEK = 60 * 60 * 24 *7
        return jwt.sign(user, config.authentication.jwtSecret, {
            expiresIn: ONE_WEEK
        })
    }
    
    module.exports={
        async register(req, res){
    
          try{
            const user= await User.create(req.body)
            const userJson = user.toJSON()
            res.send({
                user: userJSON,
                token: jwtSignUser(userJson)
            })
          } catch (err){
             res.status(400).send({
                error: 'This email account is already in use.'
             })
            }
        },
        async login(req, res) {
            try{
                const {email, password} = req.body
                const user= await User.findOne({
                    where: {
                        email: email
                    }
                })
                if (!user) {
                    return res.status(403).send({
                        error: 'The login information was incorrect'
                    })
                }
                const isPasswordValid = await user.comparePassword(password)
                if(!isPasswordValid) {
                    return res.status(403).send({
                        error: 'The login information was incorrect'
                    })
                }
                const userJson = user.toJSON()
                res.send({
                    user: userJSON,
                    token: jwtSignUser(userJson)
                })
            }catch (err){
                res.status(500).send({
                    error: 'An error has occured trying to log in'
                })
            }
        }
    }