login.js 942 B

12345678910111213141516171819202122232425262728293031323334
  1. const _ = require('lodash')
  2. const config = require('../../../config')
  3. const bcrypt = require('bcrypt')
  4. const JWT = require('jsonwebtoken')
  5. const aguid = require('aguid')
  6. const { User, Session } = require('../../database')
  7. module.exports = {
  8. post: async (req, res) => {
  9. const user = await User.find({where: {email: req.body.email}})
  10. if (user) {
  11. const success = await bcrypt.compare(req.body.password, user.password)
  12. if (success) {
  13. const sid = aguid()
  14. const exp = Math.floor(Date.now()/1000) + config.auth.jwtExpires
  15. await Session.create({
  16. id: sid,
  17. startAt: Date.now(),
  18. endAt : exp,
  19. })
  20. const token = JWT.sign({
  21. sid,
  22. exp,
  23. user: user.sanitize()
  24. }, config.auth.jwtSecret);
  25. return res.status(200).send({
  26. user: user.sanitize(),
  27. token
  28. })
  29. }
  30. }
  31. return res.send(401)
  32. }
  33. }