PR: Merge feature/ProfessorApplication-page into develop#31
Merged
Conversation
NiconiKimg
approved these changes
Aug 14, 2025
Collaborator
NiconiKimg
left a comment
There was a problem hiding this comment.
En próximas actualizaciones se debería agregar una foto en la sección de profesores. Está solo el alt.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #28
Cambios Principales
Página de Solicitud para Profesores
Creación de la Página: Se ha creado una nueva página (ProfessorApplication.tsx) que contiene el formulario de solicitud.
Adaptación de Componente: El diseño inicial se adaptó de un entorno Next.js a nuestro stack de Vite + React Router, eliminando directivas como "use client" y actualizando los componentes de enrutamiento (Link de react-router-dom en lugar de next/link).
Componentes de UI Refactorizados:
Se han refactorizado los componentes de formulario (Input, Textarea) para encapsular su lógica asociada (etiquetas, iconos, mensajes de error).
El componente Input ahora es más robusto y puede renderizar tanto un como un <textarea> a través de la prop as="textarea".
Se ha limpiado el JSX de la página para eliminar divs y Labels redundantes, utilizando los nuevos componentes "inteligentes" para un código más limpio y mantenible.
Implementación de Rutas Protegidas y Control de Acceso
Componente ProtectedRoute.tsx: Se ha implementado un componente guardián que se integra con nuestro AuthContext.
Maneja un estado de carga (isLoading) para prevenir redirecciones prematuras.
Redirige a los usuarios no autenticados a la página de /login.
Valida que el rol del usuario esté incluido en una lista de allowedRoles. Si no es así, redirige a /unauthorized.
Actualización de AppRouter.tsx: La nueva ruta /professor/apply ha sido añadida al enrutador y está protegida por el componente ProtectedRoute, permitiendo el acceso únicamente a los usuarios con rol de 'student' y 'admin'.
Navbar Dinámica y Navegación Condicional
Botón "Quiero ser profesor" Funcional: El botón en el NavBar ahora tiene lógica funcional.
Se ha creado una función handleApplyClick que utiliza los hooks useAuth y useNavigate.
La función comprueba si el usuario está autenticado y tiene el rol correcto antes de redirigir.
Renderizado Condicional Avanzado: La visibilidad del botón "Quiero ser profesor" ahora es dinámica para mejorar la experiencia de usuario:
SE MUESTRA para usuarios no autenticados y para usuarios con rol de 'student'.
SE OCULTA para usuarios con rol de 'professor' y 'admin', ya que la acción no es relevante para ellos.
Archivos Clave Modificados
Consideraciones Adicionales
La lógica de envío del formulario en ProfessorApplication.tsx (handleSubmit) actualmente solo muestra un console.log y una alerta. Una tarea de seguimiento será integrar la llamada a la API con axios para enviar los datos al backend.