access.ts 775 B

123456789101112131415161718192021222324252627282930313233
  1. // eslint-disable-next-line func-names
  2. export default function (initialState) {
  3. const { roles = [], currentUser = {}, permData = {} } = initialState || {}
  4. const authPermDataFilter = route => {
  5. if (currentUser.isAdmin) {
  6. return true
  7. }
  8. const name = route.path?.match(/\/(\w*)\//)[1]
  9. if (name && permData[name] && permData[name]?.length) {
  10. return true
  11. }
  12. return false
  13. }
  14. const authRouteFilter = route => {
  15. if (currentUser.isAdmin) {
  16. return true
  17. }
  18. if (roles.filter(r => r.endsWith('_access')).includes(`${route.name}_access`)) {
  19. if (route.validatePerm) {
  20. return authPermDataFilter(route)
  21. }
  22. return true
  23. }
  24. return false
  25. }
  26. return {
  27. authRouteFilter,
  28. authPermDataFilter
  29. }
  30. }