7557dffc52
- POST /api/auth/register: primer usuario del sistema -> superadmin con sesion directa (bootstrap, sin correo ni aprobacion); los siguientes quedan pending_verification y reciben un correo con enlace de un solo uso (24h). - GET /api/auth/verify-email: pasa a pending_approval y notifica in-app a los admin/superadmin activos. - admin/superadmin aprueban (POST /api/users/:id/approve, eligen rol y departamento) o rechazan (POST /api/users/:id/reject, borra y audita el email) desde Organizacion -> Usuarios (nuevo badge de estado + acciones). - login() da mensaje especifico segun el status de la cuenta en vez del generico "credenciales invalidas". - Recuperacion de clave (forgot/reset-password): respuesta siempre generica, token de 1 hora de un solo uso. - Nuevo modulo settings: SMTP configurable SOLO por superadmin desde Configuracion -> Correo (SMTP); clave cifrada AES-256-GCM (ENCRYPTION_KEY) en la tabla system_settings, nunca expuesta por la API. sendMail() degrada a modo dev (loguea en vez de enviar) si no hay SMTP configurado, y nunca deja que un fallo de envio tumbe al que lo llama. - Migracion 002_registration_and_smtp.sql: rol superadmin, columnas de ciclo de vida en users (status, tokens), tabla system_settings, y promueve al usuario mas antiguo del sistema a superadmin. - Fix: React.StrictMode disparaba el efecto de VerifyEmailPage dos veces; la segunda llamada (token ya consumido) mostraba "enlace invalido" pese a que la verificacion ya habia funcionado. Se agrega una guarda por token. - Fix (deuda tecnica v1.0.0): se reordena el montaje de rutas en app.js — subtasksRoutes (mount generico en /api) va al final, para no interceptar con su requireAuth interno una request sin token dirigida a un router mas especifico registrado despues. - Documentacion actualizada: AGENTS.md, SPEC.md, API.md, BASE_DE_DATOS.md, CONFIGURACION.md, ESTADO.md, CHANGELOG.md. Version 1.1.0. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
39 lines
2.4 KiB
Markdown
39 lines
2.4 KiB
Markdown
# Changelog - project.linkedcorp.net
|
|
|
|
## [1.1.0] - 2026-09-06
|
|
### Added
|
|
- Autorregistro público (`/registro`) con verificación de correo (enlace de un solo uso, 24h) y
|
|
aprobación posterior por Administrador/Superadministrador (`/api/users/:id/approve|reject`).
|
|
- Recuperación de clave (`/olvide-clave` → `/restablecer-clave`), respuesta siempre genérica.
|
|
- Rol `superadmin`: el usuario más antiguo del sistema (bootstrap automático al primer registro).
|
|
- Configuración → Correo (SMTP), solo visible/editable por el superadmin; clave cifrada
|
|
(AES-256-GCM) en `system_settings`, nunca expuesta por la API. Sin configurar, los correos de
|
|
verificación/recuperación se loguean en vez de enviarse (modo dev, no rompe el flujo).
|
|
### Fixed
|
|
- Bug real: `React.StrictMode` disparaba dos veces el efecto de `VerifyEmailPage`, y la segunda
|
|
llamada (token ya consumido) mostraba "enlace inválido" aunque la verificación sí había
|
|
funcionado. Corregido con una guarda por token ya solicitado.
|
|
- Reordenado el montaje de rutas del backend: `subtasksRoutes` (mount genérico en `/api`) queda al
|
|
final, para no interceptar con su `requireAuth` interno una request sin token dirigida a un
|
|
router más específico registrado después (ver deuda técnica de la v1.0.0).
|
|
|
|
## [1.0.0] - 2026-09-06
|
|
### Added
|
|
- Primer despliegue a producción: `https://project.linkedcorp.net` (arquetipo B, dos servicios).
|
|
- `create-admin.js`: bootstrap del usuario Administrador de producción con clave fuerte generada.
|
|
### Changed
|
|
- `seed-db.js` separa catálogos (universal) de datos de ejemplo (solo entornos no productivos).
|
|
- Logo real de LinkedCorp (sidebar, login) en vez del placeholder "LC"; tamaño duplicado.
|
|
- `ComboBox`/`Flyout` se posicionan con portal a `document.body` (ya no se recortan dentro de un
|
|
`Expander` o `DetailPopup`).
|
|
- Master-detail de listados unificado en `DetailPopup` (popup de tamaño fijo, no se cierra con
|
|
clic afuera) en Proyectos, Actividades, Departamentos, Usuarios, Miembros y Catálogos.
|
|
- "Miembros" del proyecto pasa a ser su propia pestaña (antes vivía dentro de "Info").
|
|
|
|
## [0.1.0] - 2026-09-03
|
|
### Added
|
|
- Estructura inicial del proyecto (backend Express + frontend React/Vite + MariaDB).
|
|
- Modelo de datos MVP: usuarios/roles, departamentos, proyectos, actividades, subtareas,
|
|
dependencias, comentarios, adjuntos, notificaciones, auditoría, catálogos.
|
|
- Identidad UI/UX Fluent/Windows 11 (UI-UX-WINDOWS) adaptada a app web.
|