feat: version 3.0.0 -- Correcciones de auditoria de seguridad, accesibilidad y redundancia
Permisos (superadmin, viewer, busqueda, tareas recurrentes), bootstrap atomico, revocacion de JWT por version de sesion (028), control optimista de edicion (029), logo sin SVG + CSP, ingesta endurecida, correos escapados, borradores, paginacion de proyectos, accesibilidad de dialogos/controles e i18n. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -4,6 +4,7 @@ import * as projectsRepo from '../projects/repository.js';
|
||||
import { canWriteActivity, recalcFromTasks } from '../activities/service.js';
|
||||
import { canReadProject } from '../projects/service.js';
|
||||
import { HttpError } from '../../utils/http.js';
|
||||
import { requireEditVersion, requireUpdated } from '../../utils/editVersion.js';
|
||||
import { logAudit } from '../../utils/audit.js';
|
||||
|
||||
async function requireActivityAccess(activityId, currentUser) {
|
||||
@@ -44,7 +45,8 @@ export async function updateTask(id, payload, currentUser) {
|
||||
if (!task) throw new HttpError(404, 'Tarea no encontrada');
|
||||
await requireActivityAccess(task.activity_id, currentUser);
|
||||
if (!payload.name) throw new HttpError(400, 'El nombre es obligatorio');
|
||||
const updated = await repo.update(id, payload);
|
||||
requireEditVersion(payload.editVersion);
|
||||
const updated = requireUpdated(await repo.update(id, payload));
|
||||
await logAudit({ userId: currentUser.id, action: 'update', entityType: 'task', entityId: id });
|
||||
return updated;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user