Skip to content

Commit 0369173

Browse files
committed
add:[permission]: add checkPermission function
1 parent 3f47966 commit 0369173

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

src/utils/permission.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import store from '@/store'
2+
3+
/**
4+
* @param {Array} value
5+
* @returns {Boolean}
6+
* @example see @/views/permission/directive.vue
7+
*/
8+
export default function checkPermission(value) {
9+
if (value && value instanceof Array && value.length > 0) {
10+
const roles = store.getters && store.getters.roles
11+
const permissionRoles = value
12+
13+
const hasPermission = roles.some(role => {
14+
return permissionRoles.includes(role)
15+
})
16+
17+
if (!hasPermission) {
18+
return false
19+
}
20+
return true
21+
} else {
22+
console.error(`need roles! Like v-permission="['admin','editor']"`)
23+
return false
24+
}
25+
}
26+

src/views/permission/directive.vue

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,23 @@
1616
<el-tag class="permission-tag" size="small">editor</el-tag> can see this
1717
</span>
1818
</div>
19+
20+
<div style="margin-top:30px;" :key="'checkPermission'+key">
21+
<code>In some cases it is not suitable to use v-permission, such as element Tab component which can only be achieved by manually setting the v-if.
22+
<br> e.g.
23+
</code>
24+
<el-tabs type="border-card" style="width:500px;">
25+
<el-tab-pane v-if="checkPermission(['admin'])" label="Admin">Admin can see this</el-tab-pane>
26+
<el-tab-pane v-if="checkPermission(['editor'])" label="Editor">Editor can see this</el-tab-pane>
27+
<el-tab-pane v-if="checkPermission(['admin','editor'])" label="Admin-OR-Editor">Both admin or editor can see this</el-tab-pane>
28+
</el-tabs>
29+
</div>
1930
</div>
2031
</template>
2132

2233
<script>
2334
import permission from '@/directive/permission/index.js' // 权限判断指令
35+
import checkPermission from '@/utils/permission' // 权限判断函数
2436
import SwitchRoles from './components/SwitchRoles'
2537
2638
export default{
@@ -33,6 +45,7 @@ export default{
3345
}
3446
},
3547
methods: {
48+
checkPermission,
3649
handleRolesChange() {
3750
this.key++
3851
}

0 commit comments

Comments
 (0)