UNPKG

@hperchec/scorpion-ui-template-default

Version:
42 lines (39 loc) 1.24 kB
/** * @vuepress * --- * title: Router - AdminMiddleware * headline: Router - AdminMiddleware * sidebarTitle: .AdminMiddleware * sidebarDepth: 0 # To disable auto sidebar links * prev: false # Disable prev link * next: false # Disable prev link * --- */ import { Core } from '@hperchec/scorpion-ui' /** * @name AdminMiddleware * @static * @type {Function} * @return {void} * @description * > {@link ../../../ context}.{@link ../../ router}.{@link ../ middlewares}.{@link ./ AdminMiddleware} * * See also [vue-router beforeEnter guard documentation](https://v3.router.vuejs.org/guide/advanced/navigation-guards.html#global-before-guards) * * If the target route has `meta.requiresAdmin` to `true`, check if current user (authenticated user) is admin. Else, redirect to `/404`. */ export default async (to, from, next) => { if (to.matched.some(record => record.meta.requiresAdmin)) { // Redirect to 404 page if user is not admin const isAdmin = Core.service('store').state.Core.Auth.currentUser.isAdmin() if (!isAdmin) { next({ path: '/404' }) } else { next() } } else { next() // make sure to always call next()! } }