Login/Logout y Trazabilidad
Jueves 12 de Junio de 12:00 PM a 9:00 PM
Se trabajó en consolidar el flujo completo de autenticación y navegación del sistema. El objetivo fue permitir un acceso seguro y contextualizado para dos tipos de usuarios, administradores y empleados, así como facilitar el cambio entre vistas de planilla semanal y mensual, concretar la funcionalidad de impersonación y registrar correctamente cada acción relevante en la bitácora del sistema.
El primer bloque de trabajo se centró en el frontend y la estructura de navegación. Se rediseñó el layout principal del sistema eliminando opciones genéricas como “Home”, “Privacy” y “Empleados” del menú superior. Se configuró la navegación para que al acceder a la raíz del sitio, el usuario sea redirigido automáticamente al formulario de inicio de sesión. Este login fue implementado mediante Razor Pages y se enlazó con el procedimiento almacenado sp_loginUsuario, que maneja la validación de credenciales y el registro del intento en la tabla EventLog, incluyendo información como IP, estado del intento y usuario.
Uno de los errores más relevantes en esta etapa surgió al intentar acceder a la sesión sin haber habilitado previamente el middleware correspondiente. Esto generaba una excepción (Session has not been configured for this application). La solución implicó activar AddSession() y UseSession() dentro del archivo Program.cs, además de asegurar el uso correcto de HttpContext.Session (y no Context.Session, como por error se utilizó al inicio).
Posteriormente se integraron botones “Ver mensual” y “Ver semanal” en las vistas de planillas semanal y y mensual, respectivamente. Esto permitió al usuario cambiar fácilmente de vista según la necesidad. Sin embargo, al implementar esta funcionalidad se detectó que el idEmpleado no siempre persistía entre navegaciones, generando pantallas vacías. Se solucionó este problema utilizando la sesión para recuperar el idEmpleado cuando no estaba presente como parámetro en la URL.
La funcionalidad de impersonación fue otra pieza crítica abordada durante esta jornada. Ya existia la habilidad para el administrador de seleccionar un empleado activo y "tomar su lugar" dentro del sistema para visualizar su información de planilla, pero hoy de hicieron mejoras a este módulo. Este cambio de contexto se implementó mediante un handler OnPostImpersonar que modifica el estado de la sesión, estableciendo un nuevo idEmpleado y manteniendo el tipo de usuario en 1, para impersonar al empleado pero mantener derechos de administrador (como volver a la página principal para manejar otros empleados) . De esta forma, se preservan las funcionalidades del modo empleado, como los botones y rutas esperadas, sin afectar la lógica de permisos.
También se creó la página Logout, que ejecuta el procedimiento sp_logoutUsuario, limpia la sesión y redirige nuevamente al login. En este punto se detectó que el procedimiento de logout no estaba registrando los eventos correctamente en EventLog. El problema se originaba por la ausencia del parámetro de salida @outResultado en el SP, lo cual fue corregido y probado hasta confirmar su correcto funcionamiento.
Además del trabajo de integración visual y de navegación, se hicieron mejoras importantes en los procedimientos de backend. Se agregaron los INSERT necesarios en los procedimientos de procesamiento de planilla para registrar movimientos y acciones relevantes en la tabla EventLog, incluyendo descripciones formateadas en JSON para reflejar claramente los datos procesados en cada evento. También se resolvió un problema en el cálculo de deducciones: anteriormente, las deducciones no obligatorias de tipo porcentual no registraban su valor adecuadamente. Se corrigió el flujo para que se consulte correctamente la tabla TipoDeduccion y se agregue el porcentaje correspondiente. Ahora el sistema genera un error si se intenta registrar una deducción porcentual cuyo valor sea cero, reforzando así la validación de datos. Se adjunta imagen que demuestra trazabilidad bien implementada.
En resumen, se consolidó un flujo coherente de login, navegación contextual según tipo de usuario, impersonación, y cierre de sesión, además de robustecer la bitácora del sistema y el procesamiento de deducciones. La interfaz se simplificó, se eliminaron rutas redundantes, y se garantizó la trazabilidad de cada acción realizada por el usuario o el sistema.
Se determina que por hacer:
-
Corregir los mensajes de error y códigos para alinearlos con los valores definidos en la tabla TipoError.
Links:
.jpeg)
Comentarios
Publicar un comentario