diff --git a/src/layouts/AdminLayout.vue b/src/layouts/AdminLayout.vue index b26aa69..628ef7e 100644 --- a/src/layouts/AdminLayout.vue +++ b/src/layouts/AdminLayout.vue @@ -1,7 +1,11 @@ diff --git a/src/layouts/AppLayout.vue b/src/layouts/AppLayout.vue index 01c79b2..6ddf680 100644 --- a/src/layouts/AppLayout.vue +++ b/src/layouts/AppLayout.vue @@ -1,5 +1,9 @@ diff --git a/src/layouts/CoordinatorLayout.vue b/src/layouts/CoordinatorLayout.vue index 555757d..5248829 100644 --- a/src/layouts/CoordinatorLayout.vue +++ b/src/layouts/CoordinatorLayout.vue @@ -1,5 +1,9 @@ diff --git a/src/pages/Auth/Login.vue b/src/pages/Auth/Login.vue index 6d162dc..386c644 100644 --- a/src/pages/Auth/Login.vue +++ b/src/pages/Auth/Login.vue @@ -30,11 +30,39 @@ const login = () => { defineUser(res.user) defineCsrfToken(res.csrf) - location.replace('/') + // Redirección basada en roles + redirectBasedOnRole(res.userRoles) } }); }; +const redirectBasedOnRole = (userRoles) => { + // Si no tiene roles o el array está vacío, redirigir a "/" + if (!userRoles || userRoles.length === 0) { + router.push('/') + return + } + + // Verificar si tiene el rol coordinador + const hasCoordinatorRole = userRoles.some(role => role.name === 'coordinador') + if (hasCoordinatorRole) { + router.push('/coordinator') + return + } + + // Verificar si tiene rol admin o developer + const hasAdminOrDeveloperRole = userRoles.some(role => + role.name === 'admin' || role.name === 'developer' + ) + if (hasAdminOrDeveloperRole) { + router.push('/admin') + return + } + + // Si no cumple ninguna condición, redirigir a "/" + router.push('/') +}; + /** Ciclos */ onMounted(() => { if (hasToken()) {