forked from AkkomaGang/admin-fe
39 lines
932 B
JavaScript
39 lines
932 B
JavaScript
const permission = {
|
|
state: {
|
|
permissionRoutes: []
|
|
},
|
|
init(data) {
|
|
const roles = data.roles;
|
|
const router = data.router;
|
|
const permissionRoutes = router.filter(v => {
|
|
if (roles.indexOf('admin') >= 0) return true;
|
|
if (this.hasPermission(roles, v)) {
|
|
if (v.children && v.children.length > 0) {
|
|
v.children = v.children.filter(child => {
|
|
if (this.hasPermission(roles, child)) {
|
|
return child
|
|
}
|
|
return false;
|
|
});
|
|
return v
|
|
} else {
|
|
return v
|
|
}
|
|
}
|
|
return false;
|
|
});
|
|
this.permissionRoutes = permissionRoutes;
|
|
},
|
|
get() {
|
|
return this.permissionRoutes
|
|
},
|
|
hasPermission(roles, route) {
|
|
if (route.meta && route.meta.role) {
|
|
return roles.some(role => route.meta.role.indexOf(role) >= 0)
|
|
} else {
|
|
return true
|
|
}
|
|
}
|
|
};
|
|
|
|
export default permission;
|