router.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. const {Router} = require ('express')
  2. const User = require('../models/User')
  3. const router = Router()
  4. const bcrypt = require('bcryptjs')
  5. const jwt = require('jsonwebtoken')
  6. const {check, validationResult} = require('express-validator')
  7. const bigscrt = "big sicret sandbox"
  8. router.post(
  9. '/registration',
  10. [
  11. check('email', 'Некорректный email').isEmail(),
  12. check('password', 'Минимальная длина пароля 6 символов').isLength({ min: 6 })
  13. ],
  14. async (req, res) => {
  15. try {
  16. const errors = validationResult(req)
  17. if (!errors.isEmpty()) {
  18. return res.status(400).json({
  19. errors: errors.array(),
  20. message: 'Некорректный данные при регистрации'
  21. })
  22. }
  23. const {email, password} = req.body
  24. const candidate = await User.findOne({ email })
  25. if (candidate) {
  26. return res.status(400).json({ message: 'Тебя когода то посылали нахуй?' })
  27. }
  28. const hashedPass = await bcrypt.hash(password, 12)
  29. const user = new User({ email, password: hashedPass })
  30. await user.save()
  31. res.status(201).json({ message: 'Пользователь создан' })
  32. } catch (e) {
  33. res.status(500).json({ message: 'Тебя когда нибудь посылали нахуй?' })
  34. }
  35. })
  36. router.get('/',async (req,res) => {
  37. try{
  38. const wProject =await Project.findOne({on})
  39. } catch (e) {
  40. res.status(500).json({ message: 'Тебя когда нибудь посылали нахуй?' })
  41. }
  42. })
  43. router.get('/:id',async (req,res) => {
  44. try{
  45. const userProject = await Project.findById(req.params.id)
  46. } catch (e) {
  47. res.status(500).json({ message: 'Тебя когда нибудь посылали нахуй?' })
  48. }
  49. })
  50. router.post(
  51. '/login',
  52. [
  53. check('email', 'Введите корректный email').normalizeEmail().isEmail(),
  54. check('password', 'Введите пароль').exists()
  55. ],
  56. async (req, res) => {
  57. try {
  58. const errors = validationResult(req)
  59. if (!errors.isEmpty()) {
  60. return res.status(400).json({
  61. errors: errors.array(),
  62. message: 'Некорректный данные при входе в систему'
  63. })
  64. }
  65. const {email, password} = req.body
  66. const user = await User.findOne({ email })
  67. if (!user) {
  68. return res.status(400).json({ message: 'Пользователь не найден' })
  69. }
  70. const isMatch = await bcrypt.compare(password, user.password)
  71. if (!isMatch) {
  72. return res.status(400).json({ message: 'Неверный пароль, попробуйте снова' })
  73. }
  74. const token = jwt.sign(
  75. { userId: user.id },
  76. bigscrt,
  77. { expiresIn: '1h' }
  78. )
  79. res.json({ token, userId: user.id })
  80. } catch (e) {
  81. res.status(500).json({ message: 'Тебя когда нибудь посылали нахуй?' })
  82. }
  83. })
  84. module.exports=router