permission.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import store from '@/store'
  2. /**
  3. * 字符权限校验
  4. * @param {Array} value 校验值
  5. * @returns {Boolean}
  6. */
  7. export function checkPermi(value) {
  8. if (value && value instanceof Array && value.length > 0) {
  9. const permissions = store.getters && store.getters.permissions
  10. const permissionDatas = value
  11. const all_permission = "*:*:*"
  12. const hasPermission = permissions.some(permission => {
  13. return all_permission === permission || permissionDatas.includes(permission)
  14. })
  15. if (!hasPermission) {
  16. return false
  17. }
  18. return true
  19. } else {
  20. console.error(`need roles! Like checkPermi="['system:user:add','system:user:edit']"`)
  21. return false
  22. }
  23. }
  24. /**
  25. * 角色权限校验
  26. * @param {Array} value 校验值
  27. * @returns {Boolean}
  28. */
  29. export function checkRole(value) {
  30. if (value && value instanceof Array && value.length > 0) {
  31. const roles = store.getters && store.getters.roles
  32. const permissionRoles = value
  33. const super_admin = "admin"
  34. const hasRole = roles.some(role => {
  35. return super_admin === role || permissionRoles.includes(role)
  36. })
  37. if (!hasRole) {
  38. return false
  39. }
  40. return true
  41. } else {
  42. console.error(`need roles! Like checkRole="['admin','editor']"`)
  43. return false
  44. }
  45. }
  46. /**
  47. * 角色权限校验
  48. * @param {array} checkId 校验id
  49. * @returns {Boolean}
  50. */
  51. export function checkRoleById(checkId) {
  52. if (!checkId) return;
  53. const roles = store.getters && store.getters.permissions;
  54. let havePermission = false;
  55. for (let i in checkId) {
  56. havePermission = roles.includes(checkId[i])
  57. }
  58. if (!havePermission) {
  59. uni.showToast({
  60. title: "当前账户无该操作权限。",
  61. icon: "none",
  62. duration: 2000
  63. })
  64. }
  65. return havePermission
  66. }