lyfO_o
2022-10-26 3c0a5d95d84c7321227f9252475ccb8ce4b07e1b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import store from '@/store'
 
/**
 * @param {Array} value
 * @returns {Boolean}
 * @example see @/views/permission/directive.vue
 */
export default function checkPermission(value) {
  if (value && value instanceof Array && value.length > 0) {
    const roles = store.getters && store.getters.roles
    const permissionRoles = value
 
    const hasPermission = roles.some(role => {
      return permissionRoles.includes(role)
    })
 
    if (!hasPermission) {
      return false
    }
    return true
  } else {
    console.error(`need roles! Like v-permission="['admin','editor']"`)
    return false
  }
}
 
export function checkBtnPermission(userType, btnType) {
  if (userType == 1 || userType == 2) {
    return true
  }
  if (!btnType) {
    return false
  }
  const roles = store.getters && store.getters.roles
  if (roles && roles.length > 0) {
    for (const role of roles) {
      const btnAccess = role.btnAccess
      if (!btnAccess) {
        return false
      }
      const btnPermission = btnAccess.split(',')
      if (btnPermission.indexOf('all') != -1) {
        return true
      }
      if (btnPermission.indexOf(btnType) != -1) {
        return true
      }
    }
    return false
  } else {
    return false
  }
}
 
export function checkRole(userType, roleName) {
  if (userType == 1 || userType == 2) {
    return true
  }
  if (!roleName) {
    return false
  }
  const roles = store.getters && store.getters.roles
  if (roles && roles.length > 0) {
    for (const role of roles) {
      const name = role.name
      if (name == roleName) {
        return true
      }
    }
    return false
  } else {
    return false
  }
}