@hperchec/scorpion-ui-template-default
Version:
Scorpion UI - Default template
42 lines (39 loc) • 1.24 kB
JavaScript
/**
* @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()!
}
}