XRoomDashboardFront/xroom-dashboard/src/router/index.js

64 lines
1.4 KiB
JavaScript
Raw Normal View History

2025-04-14 13:09:00 +00:00
import { createRouter, createWebHistory } from 'vue-router'
2025-04-21 12:47:59 +00:00
import SignupPage from '../pages/SignupPage.vue' // Renamed
import LoginPage from '../pages/LoginPage.vue' // Renamed
import DashboardPage from '../pages/dashboard/index.vue'
import FilesPage from '@/pages/dashboard/files.vue'; // import the new page
import axios from '@/axios';
2025-04-14 13:09:00 +00:00
const routes = [
{
path: '/signup',
name: 'SignupPage', // Renamed
component: SignupPage
},
{
path: '/login',
name: 'LoginPage', // Renamed
component: LoginPage
},
{
path: '/dashboard',
name: 'DashboardPage', // Renamed
component: DashboardPage
},{
2025-04-21 12:47:59 +00:00
path: '/dashboard/files',
2025-04-14 13:09:00 +00:00
name: 'files',
component: FilesPage, // link the files page
}
]
const router = createRouter({
history: createWebHistory(process.env.BASE_URL),
routes
})
2025-04-21 12:47:59 +00:00
router.beforeEach(async (to, from, next) => {
const token = localStorage.getItem('token');
// No token, redirect to login if trying to access dashboard
if (to.path === '/dashboard' && !token) {
return next('/login');
}
if (token) {
try {
await axios.get('/getInfo');
if (to.path === '/login') {
return next('/dashboard');
}
return next();
} catch (err) {
// Invalid token, redirect to login
localStorage.removeItem('token');
localStorage.removeItem('user');
return next('/login');
}
}
next();
});
2025-04-14 13:09:00 +00:00
export default router