From 16e4118c6bedb4354d0e1d494814cb6847eb5743 Mon Sep 17 00:00:00 2001 From: MarianoCampetella Date: Wed, 30 Apr 2025 15:29:50 -0300 Subject: [PATCH 1/2] =?UTF-8?q?fix(GDU-77):=20No=20se=20actualiza=20fecha?= =?UTF-8?q?=20de=20=C3=BAltimo=20login?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- auth/schemas/authUsers.ts | 1 + auth/schemas/permisos-organizaciones.ts | 3 ++- core/tm/controller/authUser.ts | 21 ++++++++++++--------- 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/auth/schemas/authUsers.ts b/auth/schemas/authUsers.ts index 5fd54eb973..3dc8cb5f54 100644 --- a/auth/schemas/authUsers.ts +++ b/auth/schemas/authUsers.ts @@ -50,6 +50,7 @@ export const AuthUsersSchema = new mongoose.Schema({ documento: String, password: String, foto: String, + lastLogin: Date, authMethod: { type: String, required: false diff --git a/auth/schemas/permisos-organizaciones.ts b/auth/schemas/permisos-organizaciones.ts index ef86ad44e8..ac45367003 100644 --- a/auth/schemas/permisos-organizaciones.ts +++ b/auth/schemas/permisos-organizaciones.ts @@ -10,7 +10,8 @@ export const PermisosOrganizacionesSchema = new Schema({ perfiles: [{ _id: Types.ObjectId, nombre: String - }] + }], + lastLogin: Date }); PermisosOrganizacionesSchema.plugin(AuditPlugin); diff --git a/core/tm/controller/authUser.ts b/core/tm/controller/authUser.ts index 0696646040..bc2570b09c 100644 --- a/core/tm/controller/authUser.ts +++ b/core/tm/controller/authUser.ts @@ -1,6 +1,6 @@ /** * Función que verifica la última vez que se actualizó/logueó un usuario. - * Si es mayor o igual a 1 mes se desactiva, + * Si es mayor o igual a 3 mes se desactiva, * cambiando la variable activo que se encuentra en cada organización a false. */ import * as moment from 'moment'; @@ -8,17 +8,20 @@ import { AuthUsers } from '../../../auth/schemas/authUsers'; export async function verificarUltimoLogueo(done) { const usuarios: any = AuthUsers.find({ 'organizaciones.activo': true }).cursor({ batchSize: 100 }); - const fLimite = moment().subtract(1, 'months').toDate(); - const fSinLogin = moment().subtract(2, 'months').toDate(); - const esMenor = (fecha) => (fecha && fecha < fLimite); + const fLimite = moment().subtract(3, 'months').toDate(); + const fSinLogin = moment().subtract(4, 'months').toDate(); for await (const user of usuarios) { for (const org of user.organizaciones) { - const lastUpdate = user.updatedAt || user.createdAt; - if (esMenor(lastUpdate) && esMenor(org.lastLogin)) { - org.activo = false; + if (!org.lastLogin && !user.lastLogin && !user.updatedAt && !user.createdAt) { + org.lastLogin = fSinLogin; } - if (!org.lastLogin && org.activo) { - org.lastLogin = user.lastLogin || lastUpdate || fSinLogin; + + const lastUpdate = [org.lastLogin, user.lastLogin, user.updatedAt, user.createdAt] + .filter(date => date) + .sort((a, b) => moment(b).valueOf() - moment(a).valueOf())[0]; + + if (moment(lastUpdate).isBefore(fLimite)) { + org.activo = false; } } await AuthUsers.updateOne( From 28ecdbbbb86ffefd566f272fb0718bea42d79b05 Mon Sep 17 00:00:00 2001 From: mcele <19591224+MCele@users.noreply.github.com> Date: Thu, 15 Jan 2026 17:01:57 -0300 Subject: [PATCH 2/2] feat(user): se actualiza fechas limite en job desactivarUsuarios --- core/tm/controller/authUser.ts | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/core/tm/controller/authUser.ts b/core/tm/controller/authUser.ts index bc2570b09c..d3cadacce0 100644 --- a/core/tm/controller/authUser.ts +++ b/core/tm/controller/authUser.ts @@ -1,28 +1,25 @@ /** * Función que verifica la última vez que se actualizó/logueó un usuario. - * Si es mayor o igual a 3 mes se desactiva, + * Si es mayor o igual a 3 meses se desactiva, * cambiando la variable activo que se encuentra en cada organización a false. */ import * as moment from 'moment'; import { AuthUsers } from '../../../auth/schemas/authUsers'; export async function verificarUltimoLogueo(done) { - const usuarios: any = AuthUsers.find({ 'organizaciones.activo': true }).cursor({ batchSize: 100 }); + const usuarios = AuthUsers.find({ 'organizaciones.activo': true }).cursor({ batchSize: 100 }); const fLimite = moment().subtract(3, 'months').toDate(); const fSinLogin = moment().subtract(4, 'months').toDate(); + const esMenor = (fecha) => (fecha && fecha < fLimite); for await (const user of usuarios) { for (const org of user.organizaciones) { - if (!org.lastLogin && !user.lastLogin && !user.updatedAt && !user.createdAt) { - org.lastLogin = fSinLogin; - } - - const lastUpdate = [org.lastLogin, user.lastLogin, user.updatedAt, user.createdAt] - .filter(date => date) - .sort((a, b) => moment(b).valueOf() - moment(a).valueOf())[0]; - - if (moment(lastUpdate).isBefore(fLimite)) { + const lastUpdate = org.updatedAt || org.createdAt || user.updatedAt || user.createdAt; + if (esMenor(lastUpdate) && esMenor(org.lastLogin)) { org.activo = false; } + if (!org.lastLogin && org.activo) { + org.lastLogin = user.lastLogin || lastUpdate || fSinLogin; + } } await AuthUsers.updateOne( { _id: user._id },