permission.uts 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. const USER_INFO_KEY = "user_info"
  2. const ALL_PERMISSION = "*:*:*"
  3. export const checkPermission = (permission: string): boolean => {
  4. try {
  5. const info = uni.getStorageSync(USER_INFO_KEY)
  6. if (info == null) return false
  7. const infoStr = info as string
  8. if (infoStr.length === 0) return false
  9. const userObj = JSON.parse(infoStr) as UTSJSONObject
  10. const permissions = userObj['permissions']
  11. if (permissions == null || !(permissions instanceof Array)) return false
  12. const permissionArray = permissions as UTSArray<string>
  13. if (permissionArray.includes(ALL_PERMISSION)) {
  14. return true
  15. }
  16. return permissionArray.includes(permission)
  17. } catch (e) {
  18. console.error('权限检查异常:', e)
  19. return false
  20. }
  21. }
  22. export const checkPermissions = (permissions: string[]): boolean => {
  23. if (permissions == null || permissions.length === 0) return false
  24. try {
  25. const info = uni.getStorageSync(USER_INFO_KEY)
  26. if (info == null) return false
  27. const infoStr = info as string
  28. if (infoStr.length === 0) return false
  29. const userObj = JSON.parse(infoStr) as UTSJSONObject
  30. const userPermissions = userObj['permissions']
  31. if (userPermissions == null || !(userPermissions instanceof Array)) return false
  32. const permissionArray = userPermissions as UTSArray<string>
  33. if (permissionArray.includes(ALL_PERMISSION)) {
  34. return true
  35. }
  36. return permissions.some((perm: string) => permissionArray.includes(perm))
  37. } catch (e) {
  38. console.error('权限检查异常:', e)
  39. return false
  40. }
  41. }
  42. export const hasAnyPermission = (permissions: string[]): boolean => {
  43. return checkPermissions(permissions)
  44. }
  45. export const hasAllPermissions = (permissions: string[]): boolean => {
  46. if (permissions == null || permissions.length === 0) return false
  47. try {
  48. const info = uni.getStorageSync(USER_INFO_KEY)
  49. if (info == null) return false
  50. const infoStr = info as string
  51. if (infoStr.length === 0) return false
  52. const userObj = JSON.parse(infoStr) as UTSJSONObject
  53. const userPermissions = userObj['permissions']
  54. if (userPermissions == null || !(userPermissions instanceof Array)) return false
  55. const permissionArray = userPermissions as UTSArray<string>
  56. if (permissionArray.includes(ALL_PERMISSION)) {
  57. return true
  58. }
  59. return permissions.every((perm: string) => permissionArray.includes(perm))
  60. } catch (e) {
  61. console.error('权限检查异常:', e)
  62. return false
  63. }
  64. }