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
|