const Token = require('../database/models/token') const bcrypt = require('bcryptjs') const loginUser = async (req, res, next) => { try { const findUser = await Token.findByCredentials(req.body.email, req.body.password) if (!findUser) { return res.status(400).send('Wrong credentials!') } const isValidPassword = await bcrypt.compare(req.body.password, findUser.password) if (!isValidPassword) { return res.status(400).send('Wrong credentials!') } const token = await Token.generateAuthToken(findUser) return res.status(201).send(findUser) } catch (e) { next(e) } } const logout = async (req, res) => { const result = await Token.destroyToken(req.body.token) if (!result) { return res.status(404).send('No user has the token provided!') } return res.send('Token ' + req.body.token + ' invalidated!') } const refreshUserToken = async (req, res) => { const form = { token: req.body.token } const result = await Token.refreshAuthToken(form.token) if (!result) { return res.status(404).send('Token not valid!') } return res.status(201).send('Token ' + result + ' refreshed successfully!') } module.exports = { loginUser, logout, refreshUserToken }