import { createRouter, createWebHashHistory } from 'vue-router' import Login from '../views/Login.vue' import WorkerDashboard from '../views/WorkerDashboard.vue' import ManagerDashboard from '../views/ManagerDashboard.vue' import WorkerHistory from '../views/WorkerHistory.vue' import ManagerAttendanceRecord from '../views/ManagerAttendanceRecord.vue' import ManagerPermissions from '../components/ManagerPermissions.vue' import WorkerChangePassword from '../views/WorkerChangePassword.vue' import WorkerSettings from '../views/WorkerSettings.vue' const router = createRouter({ history: createWebHashHistory(), routes: [ { path: '/', name: 'login', component: Login }, { path: '/worker/dashboard', name: 'worker-dashboard', component: WorkerDashboard, meta: { requiresAuth: true, role: 'worker' }, }, { path: '/worker/history', name: 'worker-history', component: WorkerHistory, meta: { requiresAuth: true, role: 'worker' }, }, { path: '/worker/change-password', name: 'worker-change-password', component: WorkerChangePassword, meta: { requiresAuth: true, role: 'worker' }, }, { path: '/worker/settings', name: 'worker-settings', component: WorkerSettings, meta: { requiresAuth: true, role: 'worker' }, }, { path: '/manager/dashboard', name: 'manager-dashboard', component: ManagerDashboard, meta: { requiresAuth: true, role: 'manager' }, }, { path: '/manager/attendance/:workerId', name: 'manager-attendance-record', component: ManagerAttendanceRecord, meta: { requiresAuth: true, role: 'manager' }, }, { path: '/manager/permissions', name: 'manager-permissions', component: ManagerPermissions, meta: { requiresAuth: true, role: 'manager' }, }, { path: '/worker/manual-guide', name: 'ManualGuide', component: () => import('@/views/ManualGuide.vue'), meta: { requiresAuth: true, role: 'worker' } }, ], }) // Updated navigation guard to support both worker and manager roles router.beforeEach((to, from, next) => { const isLoggedIn = !!sessionStorage.getItem('userId') const userRole = sessionStorage.getItem('userRole') if (to.meta.requiresAuth) { if (isLoggedIn) { // Allow both worker and manager roles if (userRole === to.meta.role || userRole === 'manager') { next() } else { // Redirect to appropriate dashboard based on role if (userRole === 'worker') { next('/worker/dashboard') } else if (userRole === 'manager') { next('/manager/dashboard') } else { sessionStorage.clear() next('/') } } } else { // User is not logged in, redirect to login page next('/') } } else if (to.name === 'login' && isLoggedIn) { // If a logged-in user tries to visit the login page, redirect to their dashboard if (userRole === 'worker') { next('/worker/dashboard') } else if (userRole === 'manager') { next('/manager/dashboard') } else { next('/') } } else { // For public routes next() } }) export default router