Как заглушить заглушить/исправить ошибку навигации

Находясь в Home, пользователь пытается перейти в админку, но у него не достаточно прав. В этом случае, роут не должен сработать или должен перекинуть в Home.

import store from '@/store';

export default [
  {
    path: '/admin',
    name: 'Admin',
    meta: {
      auth: true,
      is_admin: true,
    },
    beforeEnter: (to, from, next) => {
      if (!(store.getters.isSuperAdmin || store.getters.isAdmin)) {
        next({
          name: 'Home',
        });
        // Или
        // next(false);
      }
      next();
    },
    component: () => import(/* webpackChunkName: "admin" */ 'Views/admin/Admin.vue'),
  },
];

Но получаю ошибку:

Uncaught (in promise) Error: Redirected when going from "/" to "/admin" via a navigation guard.
    at createRouterError (vue-router.esm.js:2008)
    at createNavigationRedirectedError (vue-router.esm.js:1967)
    at vue-router.esm.js:2314
    at _callee$ (index.ts:15)
    at tryCatch (runtime.js:63)
    at Generator.invoke [as _invoke] (runtime.js:293)
    at Generator.next (runtime.js:118)
    at asyncGeneratorStep (asyncToGenerator.js:3)
    at _next (asyncToGenerator.js:25)
    at asyncToGenerator.js:32

В компонентах от подобной ошибки я избавлялся так:

goToIfAllowed(name: string): void {
  if (this.canToRoute(name)) {
    this.$router.push({
      name: name,
    });
  }
}

А как это победить в хуке?


Ответы (0 шт):