@ceeed

Как правильно написать функцию router.beforeEach чтобы она пускала только на определенный curl определенного пользователя?

У меня есть router.beforeEach которая проверяет есть ли пользователь и авторизован ли он.
Мне нужно как то сделать так, чтобы эта функция пускала только пользователя с email admin@adm.com
на curl /siteadmin. Я немного не могу понять как правильно обратиться к полям в Localstorage. Вот мой компонент роутер:

const router = createRouter({
  history: createWebHistory(),
  routes: [
    {
      path: '/',
      name: 'home',
      component: Home,
      meta: { 
        auth: true,
      }
    },
    {
      path: '/login',
      name: 'login',
      component: Login
    },
    {
      path: '/register',
      name: 'register',
      component: Register
    },
    {
      path: '/siteadmin',
      name: 'siteadmin',
      component: SiteAdmin
    },
  ]
}) 

function getCurrentUser() {
  const localUserString = window.localStorage.getItem('user') || null;
  return JSON.parse(localUserString);
}
router.beforeEach((to,from,next) => {
  const requiresAuth = to.meta.auth
  console.log("window.localStorage",window.localStorage);
  console.log("window.localStorage",window.localStorage.user);
  console.log("requiresAuth",requiresAuth);

  if (requiresAuth && getCurrentUser()) {
    next()
  } else if (requiresAuth && !getCurrentUser()) {
    next('/login?message=login')
  } else {
    next()
  }
})


export default router


Вот, что находится сейчас в localstorage

614afd3634d1c040334796.png
Как мне сделать условие по которому только пользователь с email admin@adm.com входил бы на curl /siteadmin а других пользователей бы выкидывало на login обратно?
  • Вопрос задан
  • 34 просмотра
Пригласить эксперта
Ответы на вопрос 1
@tantumus21
const localUserEmail = window.localStorage.getItem('email') || null;


потом

if (to.path === '/siteadmin'  && localUserEmail === 'admin@adm.com') next()
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы