authorize.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. const jwt = require('jsonwebtoken');
  2. const config = require('../config/config.json');
  3. module.exports = authorize
  4. function authorize(roles = []) {
  5. // roles param (Role.Client or 'client')
  6. // ([Role.Admin, Role.Client] or ['admin', 'client'])
  7. if (typeof roles === 'string') { roles = [roles] }
  8. return [
  9. // authorize based on user role
  10. (req, res, next) => {
  11. try {
  12. const headerstoken = req.headers.authorization;
  13. if(req.headers.authorization){
  14. if (headerstoken.startsWith('Bearer ')) {
  15. token = headerstoken.split(' ')[1];
  16. const decodedToken = jwt.verify(token, config.secret_key);
  17. const token_role = decodedToken.role;
  18. if (roles.length && !roles.includes(token_role)) {
  19. throw new Error('rrrrrrrrrrrr');
  20. } else {
  21. next()
  22. }
  23. }
  24. else {
  25. throw new Error('token is not supplied');
  26. }
  27. }else{throw new Error('token not found');}
  28. } catch (err) {
  29. res.status(401).json({
  30. success: false,
  31. message: err.message
  32. })
  33. }
  34. }
  35. ]
  36. }