permission.js 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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. // Android权限查询
  47. function requestAndroidPermission(permissionID) {
  48. return new Promise((resolve, reject) => {
  49. plus.android.requestPermissions(
  50. [permissionID], // 理论上支持多个权限同时查询,但实际上本函数封装只处理了一个权限的情况。有需要的可自行扩展封装
  51. function(resultObj) {
  52. var result = 0;
  53. for (var i = 0; i < resultObj.granted.length; i++) {
  54. var grantedPermission = resultObj.granted[i];
  55. console.log('已获取的权限:' + grantedPermission);
  56. result = 1
  57. }
  58. for (var i = 0; i < resultObj.deniedPresent.length; i++) {
  59. var deniedPresentPermission = resultObj.deniedPresent[i];
  60. console.log('拒绝本次申请的权限:' + deniedPresentPermission);
  61. result = 0
  62. }
  63. for (var i = 0; i < resultObj.deniedAlways.length; i++) {
  64. var deniedAlwaysPermission = resultObj.deniedAlways[i];
  65. console.log('永久拒绝申请的权限:' + deniedAlwaysPermission);
  66. result = -1
  67. }
  68. resolve(result);
  69. // 若所需权限被拒绝,则打开APP设置界面,可以在APP设置界面打开相应权限
  70. // if (result != 1) {
  71. // gotoAppPermissionSetting()
  72. // }
  73. },
  74. function(error) {
  75. console.log('申请权限错误:' + error.code + " = " + error.message);
  76. resolve({
  77. code: error.code,
  78. message: error.message
  79. });
  80. }
  81. );
  82. });
  83. }