From d1caa5c5ce654b5982b9cdeab931ffaadf241c2a Mon Sep 17 00:00:00 2001 From: Ahmed Bouhuolia Date: Mon, 10 Jun 2024 15:59:33 +0200 Subject: [PATCH] fix: Disable email confirmation does not work with invited users --- .../src/services/Authentication/AuthSignin.ts | 6 ++++-- .../services/InviteUsers/SyncSystemSendInvite.ts | 3 +++ packages/server/src/system/models/SystemUser.ts | 14 ++++++++++++++ 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/packages/server/src/services/Authentication/AuthSignin.ts b/packages/server/src/services/Authentication/AuthSignin.ts index 1331eefd5..ede392801 100644 --- a/packages/server/src/services/Authentication/AuthSignin.ts +++ b/packages/server/src/services/Authentication/AuthSignin.ts @@ -1,6 +1,6 @@ import { Container, Inject } from 'typedi'; import { cloneDeep } from 'lodash'; -import { Tenant } from '@/system/models'; +import { SystemUser, Tenant } from '@/system/models'; import { IAuthSignedInEventPayload, IAuthSigningInEventPayload, @@ -64,7 +64,9 @@ export class AuthSigninService { const { systemUserRepository } = this.sysRepositories; // Finds the user of the given email address. - const user = await systemUserRepository.findOneByEmail(email); + const user = await SystemUser.query() + .findOne('email', email) + .modify('inviteAccepted'); // Validate the given email and password. await this.validateSignIn(user, email, password); diff --git a/packages/server/src/services/InviteUsers/SyncSystemSendInvite.ts b/packages/server/src/services/InviteUsers/SyncSystemSendInvite.ts index c201fa739..fd29b6738 100644 --- a/packages/server/src/services/InviteUsers/SyncSystemSendInvite.ts +++ b/packages/server/src/services/InviteUsers/SyncSystemSendInvite.ts @@ -46,6 +46,9 @@ export default class SyncSystemSendInvite { email: user.email, active: user.active, tenantId, + + // Email should be verified since the user got the invite token through email. + verified: true, }); // Creates a invite user token. const invite = await Invite.query().insert({ diff --git a/packages/server/src/system/models/SystemUser.ts b/packages/server/src/system/models/SystemUser.ts index ce17186df..e1f77d566 100644 --- a/packages/server/src/system/models/SystemUser.ts +++ b/packages/server/src/system/models/SystemUser.ts @@ -90,6 +90,20 @@ export default class SystemUser extends SystemModel { }; } + /** + * Model modifiers. + */ + static get modifiers() { + return { + /** + * Filters the invite accepted users. + */ + inviteAccepted(query) { + query.whereNotNull('invite_accepted_at'); + }, + }; + } + /** * Verify the password of the user. * @param {String} password - The given password.