Vue · Senior · Запитання 39 з 75

Як реалізувати доступ за ролями через meta маршрутів?

{ path: "/admin", component: Admin, meta: { roles: ["admin"] } }
router.beforeEach((to) => {
  const roles = to.matched.flatMap((r) => r.meta.roles ?? []);
  if (roles.length && !roles.some(auth.hasRole)) return { name: "forbidden" };
});

Пояснення

to.meta - неглибоке злиття meta батька й нащадка, тому значення нащадка перезаписують батьківські; to.matched дає кожен рівень окремо. Типізуйте meta через розширення модуля RouteMeta.

Де почитати

Помилка в запитанні

Vue · Senior · запитання 39

Перевірте себе

Пройдіть тест Vue · Senior: запитання й варіанти перемішуються, а наприкінці - розбір помилок.

Пройти цей тест