Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

auth.js 1.1KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. const jwt = require('jsonwebtoken')
  2. const User = require('../database/models/user')
  3. const Role = require('../database/models/roles')
  4. const auth = async (req, res, next) => {
  5. try {
  6. const token = req.header('Authorization').replace('Bearer ', '')
  7. const decoded = jwt.verify(token, 'ovoJeSecret')
  8. console.log(decoded)
  9. } catch (e) {
  10. return res.send(e)
  11. }
  12. console.log('auth middleware')
  13. next()
  14. }
  15. const authRole = async (req, res, next) => {
  16. try {
  17. const token = req.header('Authorization').replace('Bearer ', '')
  18. if(!token) {
  19. return res.status(401).send('Invalid token!')
  20. }
  21. const findUser = await User.findOne({ 'tokens.token': token })
  22. if(!findUser) {
  23. return res.status(401).send('No user has the token provided!')
  24. }
  25. if(findUser['role'] === Role.Admin) {
  26. console.log('User is admin!')
  27. next()
  28. }
  29. else {
  30. return res.status(403).send('Access forbidden!')
  31. }
  32. } catch(e) {
  33. next(e)
  34. }
  35. }
  36. module.exports = { auth, authRole }