From 0a8fc9d245f60600b7c895b2bb8a68d43fac0bb0 Mon Sep 17 00:00:00 2001 From: MoonTestUse1 Date: Thu, 2 Jan 2025 01:56:58 +0600 Subject: [PATCH] =?UTF-8?q?=D1=87=D0=B8=D0=BD=D0=B8=D0=BC=20=D0=B1=D0=B8?= =?UTF-8?q?=D0=BB=D0=B405?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/router/index.ts | 85 ++++++++++---------------------- frontend/src/views/LoginView.vue | 8 ++- frontend/vite.config.ts | 14 ++---- 3 files changed, 36 insertions(+), 71 deletions(-) diff --git a/frontend/src/router/index.ts b/frontend/src/router/index.ts index 9ba0ba3..86eb3af 100644 --- a/frontend/src/router/index.ts +++ b/frontend/src/router/index.ts @@ -1,60 +1,22 @@ import { createRouter, createWebHistory } from 'vue-router'; -import { useAuthStore } from '@/stores/auth'; const router = createRouter({ history: createWebHistory(), routes: [ { path: '/', - component: () => import('@/layouts/MainLayout.vue'), - children: [ - { - path: '', - name: 'Home', - component: () => import('@/views/HomeView.vue') - }, - { - path: 'login', - name: 'Login', - component: () => import('@/views/LoginView.vue') - } - ] + name: 'home', + component: () => import('@/views/HomeView.vue') + }, + { + path: '/login', + name: 'login', + component: () => import('@/views/LoginView.vue') }, { path: '/admin', - component: () => import('@/layouts/AdminLayout.vue'), - meta: { requiresAdmin: true }, - children: [ - { - path: '', - redirect: '/admin/dashboard' - }, - { - path: 'dashboard', - name: 'AdminDashboard', - component: () => import('@/views/admin/DashboardView.vue') - }, - { - path: 'requests', - name: 'AdminRequests', - component: () => import('@/views/admin/RequestsView.vue') - }, - { - path: 'employees', - name: 'AdminEmployees', - component: () => import('@/views/admin/EmployeesView.vue') - }, - { - path: 'employees/add', - name: 'AdminEmployeeAdd', - component: () => import('@/views/admin/AddEmployeeView.vue') - } - ] - }, - { - path: '/admin/login', - name: 'AdminLogin', - component: () => import('@/views/admin/AdminLoginView.vue') + name: 'admin-login', + component: () => import('@/views/AdminLoginView.vue') }, { path: '/requests', @@ -65,20 +27,23 @@ const router = createRouter({ ] }); -router.beforeEach((to, _, next) => { - const authStore = useAuthStore(); - - if (to.meta.requiresAdmin && !authStore.isAdmin) { - next({ name: 'AdminLogin' }); - } else if (to.meta.requiresAuth) { - const token = localStorage.getItem('token'); +router.beforeEach((to, from, next) => { + console.log('Проверка маршрута:', to.path) + + if (to.meta.requiresAuth) { + console.log('Маршрут требует авторизации') + const token = localStorage.getItem('token') + console.log('Токен:', token ? 'Присутствует' : 'Отсутствует') + if (!token) { - next('/login'); - return; + console.log('Перенаправление на /login') + next('/login') + return } - } else { - next(); } -}); + + console.log('Разрешаем переход') + next() +}) -export default router; \ No newline at end of file +export default router \ No newline at end of file diff --git a/frontend/src/views/LoginView.vue b/frontend/src/views/LoginView.vue index 15f45a3..49f9479 100644 --- a/frontend/src/views/LoginView.vue +++ b/frontend/src/views/LoginView.vue @@ -69,19 +69,23 @@ const handleLogin = async () => { error.value = '' try { + console.log('Отправка запроса на авторизацию...') const response = await axios.post('/api/auth/login', { last_name: lastName.value, password: password.value }) + console.log('Ответ от сервера:', response.data) // Сохраняем данные сотрудника и токен localStorage.setItem('employee', JSON.stringify(response.data)) localStorage.setItem('token', response.data.access_token) + console.log('Перенаправление на /requests...') // Перенаправляем на страницу заявок - router.push('/requests') + await router.push('/requests') } catch (e: any) { - error.value = e.response?.data?.detail || 'Произошла ошибка при входе' + console.error('Ошибка при авторизации:', e) + error.value = e.response?.data?.detail || 'Неверная фамилия или пароль' } finally { loading.value = false } diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index a526c8b..3999316 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -1,23 +1,19 @@ import { defineConfig } from 'vite'; import vue from '@vitejs/plugin-vue'; -import { fileURLToPath, URL } from 'url'; +import path from 'path'; +// https://vitejs.dev/config/ export default defineConfig({ plugins: [vue()], resolve: { alias: { - '@': fileURLToPath(new URL('./src', import.meta.url)) - } + '@': path.resolve(__dirname, './src'), + }, }, server: { - host: true, - port: 5173, - watch: { - usePolling: true - }, proxy: { '/api': { - target: 'http://support-backend:8000', + target: 'http://backend:8000', changeOrigin: true } }