You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

token.js 1.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. const Token = require('../database/models/token')
  2. const bcrypt = require('bcryptjs')
  3. const loginUser = async (req, res, next) => {
  4. try {
  5. const findUser = await Token.findByCredentials(req.body.email, req.body.password)
  6. if (!findUser) {
  7. return res.status(400).send('Wrong credentials!')
  8. }
  9. const isValidPassword = await bcrypt.compare(req.body.password, findUser.password)
  10. if (!isValidPassword) {
  11. return res.status(400).send('Wrong credentials!')
  12. }
  13. const token = await Token.generateAuthToken(findUser)
  14. return res.status(201).send(findUser)
  15. } catch (e) {
  16. next(e)
  17. }
  18. }
  19. const logout = async (req, res) => {
  20. const result = await Token.destroyToken(req.body.token)
  21. if (!result) {
  22. return res.status(404).send('No user has the token provided!')
  23. }
  24. return res.send('Token ' + req.body.token + ' invalidated!')
  25. }
  26. const refreshUserToken = async (req, res) => {
  27. const form = {
  28. token: req.body.token
  29. }
  30. const result = await Token.refreshAuthToken(form.token)
  31. if (!result) {
  32. return res.status(404).send('Token not valid!')
  33. }
  34. return res.status(201).send('Token ' + result + ' refreshed successfully!')
  35. }
  36. module.exports = { loginUser, logout, refreshUserToken }