rbac.js 788 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. const {
  2. ERROR
  3. } = require('../common/error')
  4. function hasRole (...roleList) {
  5. const userRole = this.authInfo.role || []
  6. if (userRole.includes('admin')) {
  7. return
  8. }
  9. const isMatch = roleList.every(roleItem => {
  10. return userRole.includes(roleItem)
  11. })
  12. if (!isMatch) {
  13. throw {
  14. errCode: ERROR.PERMISSION_ERROR
  15. }
  16. }
  17. }
  18. function hasPermission (...permissionList) {
  19. const userRole = this.authInfo.role || []
  20. const userPermission = this.authInfo.permission || []
  21. if (userRole.includes('admin')) {
  22. return
  23. }
  24. const isMatch = permissionList.every(permissionItem => {
  25. return userPermission.includes(permissionItem)
  26. })
  27. if (!isMatch) {
  28. throw {
  29. errCode: ERROR.PERMISSION_ERROR
  30. }
  31. }
  32. }
  33. module.exports = {
  34. hasRole,
  35. hasPermission
  36. }