auth.ts 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import store from '@/store'
  2. function authPermission(permission: string): boolean {
  3. const all_permission = "*:*:*"
  4. const permissions: Array<string> = store.getters && store.getters.permissions
  5. if (permission && permission.length > 0) {
  6. return permissions.some(v => {
  7. return all_permission === v || v === permission
  8. })
  9. } else {
  10. return false
  11. }
  12. }
  13. function authRole(role: string): boolean {
  14. const super_admin = "admin"
  15. const roles: Array<string> = store.getters && store.getters.roles
  16. if (role && role.length > 0) {
  17. return roles.some(v => {
  18. return super_admin === v || v === role
  19. })
  20. } else {
  21. return false
  22. }
  23. }
  24. export default {
  25. /**
  26. * 验证用户是否具备某权限
  27. * @param permission 权限符
  28. * @returns
  29. */
  30. hasPermi(permission: string): boolean {
  31. return authPermission(permission)
  32. },
  33. /**
  34. * 验证用户是否含有指定权限,只需包含其中一个
  35. * @param permissions 权限符数组
  36. * @returns
  37. */
  38. hasPermiOr(permissions: Array<string>): boolean {
  39. return permissions.some(item => {
  40. return authPermission(item)
  41. })
  42. },
  43. /**
  44. * 验证用户是否含有指定权限,必须全部拥有
  45. * @param permissions 权限符数组
  46. * @returns
  47. */
  48. hasPermiAnd(permissions: Array<string>): boolean {
  49. return permissions.every(item => {
  50. return authPermission(item)
  51. })
  52. },
  53. /**
  54. * 验证用户是否具备某角色
  55. * @param role 角色
  56. * @returns
  57. */
  58. hasRole(role: string): boolean {
  59. return authRole(role)
  60. },
  61. /**
  62. * 验证用户是否含有指定角色,只需包含其中一个
  63. * @param roles 角色数组
  64. * @returns
  65. */
  66. hasRoleOr(roles: Array<string>): boolean {
  67. return roles.some(item => {
  68. return authRole(item)
  69. })
  70. },
  71. /**
  72. * 验证用户是否含有指定角色,必须全部拥有
  73. * @param roles 角色数组
  74. * @returns
  75. */
  76. hasRoleAnd(roles: Array<string>): boolean {
  77. return roles.every(item => {
  78. return authRole(item)
  79. })
  80. }
  81. }