├── php-api/ # 改造后的PHP接口层 ├── java-ad-service/ # 若依框架微服务(广告+VIP+分账) ├── uniapp-reader/ # UniApp前端项目 │ ├── pages/ # 各端页面 │ └──
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

permission.js 2.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import store from '@/store'
  2. import router from '@/router'
  3. /**
  4. * 字符权限校验
  5. * @param {Array} value 校验值
  6. * @returns {Boolean}
  7. */
  8. export function checkPermission(path) {
  9. // 确保路径以斜杠开头
  10. if (!path.startsWith('/')) path = '/' + path
  11. // 检查路由是否存在
  12. const route = router.resolve(path)
  13. if (!route || !route.route) {
  14. console.error(`路由不存在: ${path}`)
  15. return false
  16. }
  17. // 添加权限验证逻辑
  18. // ...
  19. return true
  20. }
  21. export function checkPermi(value) {
  22. if (value && value instanceof Array && value.length > 0) {
  23. const permissions = store.getters && store.getters.permissions
  24. const permissionDatas = value
  25. const all_permission = "*:*:*"
  26. const hasPermission = permissions.some(permission => {
  27. return all_permission === permission || permissionDatas.includes(permission)
  28. })
  29. if (!hasPermission) {
  30. return false
  31. }
  32. return true
  33. } else {
  34. console.error(`need roles! Like checkPermi="['system:user:add','system:user:edit']"`)
  35. return false
  36. }
  37. }
  38. /**
  39. * 角色权限校验
  40. * @param {Array} value 校验值
  41. * @returns {Boolean}
  42. */
  43. export function checkRole(value) {
  44. if (value && value instanceof Array && value.length > 0) {
  45. const roles = store.getters && store.getters.roles
  46. const permissionRoles = value
  47. const super_admin = "admin"
  48. const hasRole = roles.some(role => {
  49. return super_admin === role || permissionRoles.includes(role)
  50. })
  51. if (!hasRole) {
  52. return false
  53. }
  54. return true
  55. } else {
  56. console.error(`need roles! Like checkRole="['admin','editor']"`)
  57. return false
  58. }
  59. }
  60. // src/permission.js
  61. router.beforeEach(async(to, from, next) => {
  62. // 确保登录页面可访问
  63. if (to.path === '/login') {
  64. next()
  65. return
  66. }
  67. // 检查 token
  68. const token = store.getters.token
  69. if (!token) {
  70. next(`/login?redirect=${to.path}`)
  71. return
  72. }
  73. // 获取用户信息
  74. if (!store.getters.name) {
  75. try {
  76. await store.dispatch('user/getInfo')
  77. next()
  78. } catch (error) {
  79. await store.dispatch('user/resetToken')
  80. next(`/login?redirect=${to.path}`)
  81. }
  82. } else {
  83. next()
  84. }
  85. })