import {createRouter, createWebHistory} from 'vue-router'
import {useUserStore} from "@/store/user.js"
const routes = [
/**
* ===============================================
* Авторизация, регистрация, восстановление пароля
* ===============================================
*/
{
path: '/auth', redirect: '/', props: true,
children: [
{
path: 'social', redirect: '/', props: true,
children: [
{
path: 'vk',
name: 'auth_social_vk',
props: true,
component: () => import('@/screens/auth/SignInVkontakte.vue'),
},
{
path: 'yandex',
name: 'auth_social_yandex',
props: true,
component: () => import('@/screens/auth/SignInYandex.vue')
}
]
}
]
},
/**
* ================
* Главная страница
* ================
*/
{
path: '/',
name: 'home',
props: true,
component: () => import('@/screens/index/Index.vue'),
},
/**
* ==============
* Личный кабинет
* ==============
*/
// ... список ИИ-менеджеров
{
path: '/my', name: 'my', redirect: '/my/managers', props: true, meta: {requiresAuth: true},
children: [
{
path: 'managers',
name: 'managers',
props: true,
component: () => import('../screens/user/AIManagers.vue')
},
{
path: 'manager-:id',
name: 'manager',
redirect: to => ({name: 'manager_dashboard', params: {id: to.params.id}}),
props: true,
component: () => import('../screens/manager/ScreenContainer.vue'),
children: [
{
path: 'dashboard',
name: 'manager_dashboard',
props: true,
component: () => import('../screens/manager/dashboard/Dashboard.vue')
},
{
path: 'dialogs',
name: 'manager_dialogs',
props: true,
component: () => import('../screens/manager/dialogs/Dialogs.vue')
},
{
path: 'pages',
name: 'manager_pages',
props: true,
component: () => import('../screens/manager/pages/IndexedPages.vue')
}
]
}
]
},
/**
* ===============================
* Demo-примеры интеграций виджета
* ===============================
*/
{
path: '/demo', name: 'demo', redirect: '/pack24.ru', props: true,
children: [
{path: 'pack24_ru', name: 'demo_pack24', props: true, component: () => import('../screens/demo/Pack24.vue')},
{path: 'productradar_ru', name: 'demo_productradar', props: true, component: () => import('../screens/demo/Productradar.vue')},
]
},
/**
* ===
* 404
* ===
*/
{
path: '/:path(.*)*',
name: 'not_found',
component: () => import('@/screens/404/404.vue'),
}
]
const router = createRouter({
history: createWebHistory(process.env.BASE_URL),
routes,
})
router.beforeEach((to, from) => {
// ... если пользователь не авторизован, но пытается открыть закрытые разделы - переадресовываем на главную
if (to.meta.requiresAuth && !useUserStore().hasCredentialsSaved && !useUserStore().isAuthorized) {
return {
path: '/',
}
}
return true
})
export default router
Спасибо, очень полезно и познавательно. Нашел пару интересных моментов которые буду использовать в ближайшее время :)
Какие именно моменты оказались полезными и интересными?