v2
This commit is contained in:
@@ -6,7 +6,8 @@ import {
|
||||
createWebHistory,
|
||||
} from 'vue-router'
|
||||
import routes from './routes'
|
||||
import { useProjectsStore } from '../stores/projects'
|
||||
import { useAuthStore } from 'stores/auth'
|
||||
import { useProjectsStore } from 'stores/projects'
|
||||
|
||||
/*
|
||||
* If not building with SSR mode, you can
|
||||
@@ -31,8 +32,62 @@ export default defineRouter(function (/* { store, ssrContext } */) {
|
||||
// quasar.conf.js -> build -> publicPath
|
||||
history: createHistory(process.env.VUE_ROUTER_BASE),
|
||||
})
|
||||
|
||||
const publicPaths = ['/login', '/terms-of-use', '/create-account', '/recovery-password']
|
||||
|
||||
Router.beforeEach(async (to) => {
|
||||
const authStore = useAuthStore()
|
||||
|
||||
// Инициализация хранилища перед проверкой
|
||||
if (!authStore.isInitialized) {
|
||||
await authStore.initialize()
|
||||
}
|
||||
|
||||
// Проверка авторизации для непубличных маршрутов
|
||||
if (!publicPaths.includes(to.path)) {
|
||||
if (!authStore.isAuthenticated) {
|
||||
return {
|
||||
path: '/login',
|
||||
query: { redirect: to.fullPath }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Редирект авторизованных пользователей с публичных маршрутов
|
||||
if (publicPaths.includes(to.path) && authStore.isAuthenticated) {
|
||||
return { path: '/' }
|
||||
}
|
||||
})
|
||||
|
||||
const handleBackButton = async () => {
|
||||
const currentRoute = Router.currentRoute.value
|
||||
if (currentRoute.meta.backRoute) {
|
||||
await Router.push(currentRoute.meta.backRoute);
|
||||
} else {
|
||||
if (window.history.length > 1) {
|
||||
Router.go(-1)
|
||||
} else {
|
||||
await Router.push('/projects')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Router.afterEach((to) => {
|
||||
const BackButton = window.Telegram?.WebApp?.BackButton;
|
||||
if (BackButton) {
|
||||
// Управление видимостью
|
||||
if (to.meta.hideBackButton) {
|
||||
BackButton.hide()
|
||||
} else {
|
||||
BackButton.show()
|
||||
}
|
||||
|
||||
// Обновляем обработчик клика
|
||||
BackButton.offClick(handleBackButton as () => void)
|
||||
BackButton.onClick(handleBackButton as () => void)
|
||||
}
|
||||
|
||||
if (!to.params.id) {
|
||||
const projectsStore = useProjectsStore()
|
||||
projectsStore.setCurrentProjectId(null)
|
||||
|
||||
Reference in New Issue
Block a user