26 lines
773 B
TypeScript
26 lines
773 B
TypeScript
import { boot } from 'quasar/wrappers';
|
|
import { StateInterface } from '../store';
|
|
|
|
export default boot(({ Vue, router, store }) => {
|
|
router.beforeEach((to, from, next) => {
|
|
let user = (<StateInterface>store.state).user;
|
|
|
|
if (to.matched.some(record => {
|
|
// permissions is set AND has NO matching permission
|
|
return record.meta.permissions !== undefined &&
|
|
!(record.meta.permissions.filter(
|
|
(value: string) =>
|
|
user.permissions.includes(value)
|
|
).length > 0);
|
|
})
|
|
) {
|
|
next({
|
|
path: '/login',
|
|
query: { redirect: to.fullPath }
|
|
});
|
|
} else {
|
|
next();
|
|
}
|
|
})
|
|
});
|