auth.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. const router = require('express').Router()
  2. const User = require('../models/user')
  3. const virifyToken = require('../middlewares/verify-token')
  4. const jwt = require('jsonwebtoken')
  5. router.post('/auth/signup', async (req, res) => {
  6. if (!req.body.email || !req.body.password) {
  7. res.json({ success: false, message: 'please enter email or password' })
  8. } else {
  9. try {
  10. let newUser = new User()
  11. newUser.name = req.body.name
  12. newUser.email = req.body.email
  13. newUser.password = req.body.password
  14. await newUser.save()
  15. let token = jwt.sign(newUser.toJSON(), process.env.SECRET, {
  16. expiresIn: 604800
  17. })
  18. res.json({
  19. success: true,
  20. token,
  21. message: 'Succes created a new User'
  22. })
  23. } catch (err) {
  24. res.status(500).json({
  25. success: false,
  26. message: err.message
  27. })
  28. }
  29. }
  30. })
  31. router.get('/auth/user', virifyToken, async (req, res) => {
  32. try {
  33. let foundUser = await (await User.findOne({ _id: req.decoded._id })).populate('address')
  34. if (foundUser) {
  35. res.json({
  36. success: true,
  37. user: foundUser
  38. })
  39. }
  40. } catch (err) {
  41. res.status(500).json({
  42. success: false,
  43. message: err.message
  44. })
  45. }
  46. })
  47. router.put('/auth/user', virifyToken, async (req, res) => {
  48. try {
  49. let foundUser = await User.findOne({ _id: req.decoded._id })
  50. if(foundUser) {
  51. if(req.body.name) foundUser.name = req.body.name
  52. if(req.body.email) foundUser.email = req.body.email
  53. if(req.body.password) foundUser.password = req.body.password
  54. await foundUser.save()
  55. res.json({
  56. success: true,
  57. // user: foundUser
  58. message: 'Successfulu update'
  59. })
  60. }
  61. } catch (err) {
  62. res.status(500).json({
  63. success: false,
  64. message: err.message
  65. })
  66. }
  67. })
  68. router.post('/auth/login', async (req, res) => {
  69. try {
  70. let foundUser = await User.findOne({ email: req.body.email})
  71. console.log(foundUser)
  72. if (!foundUser) {
  73. res.status(403).json({
  74. success: false,
  75. message: 'Authentication failed, User not found '
  76. })
  77. } else {
  78. if (foundUser.comparePassword(req.body.password)) {
  79. let token = jwt.sign(foundUser.toJSON(), process.env.SECRET, {
  80. expiresIn: 604800
  81. })
  82. res.json({ success: true, token})
  83. } else {
  84. res.status(403).json({
  85. success: false,
  86. message: 'Authentication failed, Wrong password'
  87. })
  88. }
  89. }
  90. } catch (err) {
  91. res.status(500).json({
  92. success: false,
  93. message: err.message
  94. })
  95. }
  96. })
  97. module.exports = router