diff --git a/src/Core/AdminConsole/OrganizationFeatures/Organizations/InitPendingOrganizationCommand.cs b/src/Core/AdminConsole/OrganizationFeatures/Organizations/InitPendingOrganizationCommand.cs index 0c2abea2e7..8f169a3862 100644 --- a/src/Core/AdminConsole/OrganizationFeatures/Organizations/InitPendingOrganizationCommand.cs +++ b/src/Core/AdminConsole/OrganizationFeatures/Organizations/InitPendingOrganizationCommand.cs @@ -328,7 +328,7 @@ public class InitPendingOrganizationCommand : IInitPendingOrganizationCommand [ _organizationRepository.BuildUpdateOrganizationAction(org), _organizationUserRepository.BuildConfirmOrganizationUserAction(orgUser), - _userRepository.BuildVerifyUserEmailAction(request.User), + _userRepository.BuildVerifyUserEmailAction(request.User.Id), ]; if (!string.IsNullOrWhiteSpace(request.CollectionName)) diff --git a/src/Core/Repositories/IUserRepository.cs b/src/Core/Repositories/IUserRepository.cs index ebeed39c83..740e76184b 100644 --- a/src/Core/Repositories/IUserRepository.cs +++ b/src/Core/Repositories/IUserRepository.cs @@ -97,9 +97,9 @@ public interface IUserRepository : IRepository /// /// Builds an action that verifies a user's email if not already verified. /// - /// The user entity to verify + /// The user ID to verify /// An action that can be executed within a transaction - OrganizationInitializationUpdateAction BuildVerifyUserEmailAction(User user); + OrganizationInitializationUpdateAction BuildVerifyUserEmailAction(Guid userId); } public delegate Task UpdateUserData(Microsoft.Data.SqlClient.SqlConnection? connection = null, diff --git a/src/Infrastructure.Dapper/Repositories/UserRepository.cs b/src/Infrastructure.Dapper/Repositories/UserRepository.cs index e2a3f680c3..3228c50a26 100644 --- a/src/Infrastructure.Dapper/Repositories/UserRepository.cs +++ b/src/Infrastructure.Dapper/Repositories/UserRepository.cs @@ -549,10 +549,16 @@ public class UserRepository : Repository, IUserRepository } } - public OrganizationInitializationUpdateAction BuildVerifyUserEmailAction(User user) + public OrganizationInitializationUpdateAction BuildVerifyUserEmailAction(Guid userId) { return async (SqlConnection? connection, SqlTransaction? transaction, object? context) => { + var user = (await connection!.QueryAsync( + "[dbo].[User_ReadById]", + new { Id = userId }, + commandType: CommandType.StoredProcedure, + transaction: transaction)).SingleOrDefault(); + if (user != null && !user.EmailVerified) { user.EmailVerified = true; diff --git a/src/Infrastructure.EntityFramework/Repositories/UserRepository.cs b/src/Infrastructure.EntityFramework/Repositories/UserRepository.cs index 80e244b2a6..0693c5f4d2 100644 --- a/src/Infrastructure.EntityFramework/Repositories/UserRepository.cs +++ b/src/Infrastructure.EntityFramework/Repositories/UserRepository.cs @@ -576,17 +576,17 @@ public class UserRepository : Repository, IUserR } } - public OrganizationInitializationUpdateAction BuildVerifyUserEmailAction(Core.Entities.User user) + public OrganizationInitializationUpdateAction BuildVerifyUserEmailAction(Guid userId) { return async (SqlConnection? _, SqlTransaction? _, object? context) => { var dbContext = (DatabaseContext)context!; - var efUser = await dbContext.Users.FindAsync(user.Id); - if (efUser != null && !efUser.EmailVerified) + var user = await dbContext.Users.FindAsync(userId); + if (user != null && !user.EmailVerified) { - efUser.EmailVerified = true; - efUser.RevisionDate = DateTime.UtcNow; + user.EmailVerified = true; + user.RevisionDate = DateTime.UtcNow; await dbContext.SaveChangesAsync(); } diff --git a/test/Core.Test/AdminConsole/OrganizationFeatures/Organizations/InitPendingOrganizationCommandTests.cs b/test/Core.Test/AdminConsole/OrganizationFeatures/Organizations/InitPendingOrganizationCommandTests.cs index 078d8a56a0..5809aa8c05 100644 --- a/test/Core.Test/AdminConsole/OrganizationFeatures/Organizations/InitPendingOrganizationCommandTests.cs +++ b/test/Core.Test/AdminConsole/OrganizationFeatures/Organizations/InitPendingOrganizationCommandTests.cs @@ -615,7 +615,7 @@ public class InitPendingOrganizationCommandTests .Returns(callInfo => new OrganizationInitializationUpdateAction((conn, trans, ctx) => Task.CompletedTask)); sutProvider.GetDependency() - .BuildVerifyUserEmailAction(Arg.Any()) + .BuildVerifyUserEmailAction(user.Id) .Returns(new OrganizationInitializationUpdateAction((conn, trans, ctx) => Task.CompletedTask)); sutProvider.GetDependency() diff --git a/test/Infrastructure.IntegrationTest/AdminConsole/Repositories/OrganizationRepositoryTests.cs b/test/Infrastructure.IntegrationTest/AdminConsole/Repositories/OrganizationRepositoryTests.cs index df081b9bd5..003ddcf166 100644 --- a/test/Infrastructure.IntegrationTest/AdminConsole/Repositories/OrganizationRepositoryTests.cs +++ b/test/Infrastructure.IntegrationTest/AdminConsole/Repositories/OrganizationRepositoryTests.cs @@ -320,7 +320,7 @@ public class OrganizationRepositoryTests { organizationRepository.BuildUpdateOrganizationAction(organization), organizationUserRepository.BuildConfirmOrganizationUserAction(organizationUser), - userRepository.BuildVerifyUserEmailAction(user) + userRepository.BuildVerifyUserEmailAction(user.Id) }; var collection = new Collection @@ -403,7 +403,7 @@ public class OrganizationRepositoryTests { organizationRepository.BuildUpdateOrganizationAction(organization), organizationUserRepository.BuildConfirmOrganizationUserAction(organizationUser), - userRepository.BuildVerifyUserEmailAction(user) + userRepository.BuildVerifyUserEmailAction(user.Id) }; // Execute all updates in single transaction @@ -453,7 +453,7 @@ public class OrganizationRepositoryTests { organizationRepository.BuildUpdateOrganizationAction(organization), organizationUserRepository.BuildConfirmOrganizationUserAction(organizationUser), - userRepository.BuildVerifyUserEmailAction(user), + userRepository.BuildVerifyUserEmailAction(user.Id), // Add a failing action to trigger rollback (Microsoft.Data.SqlClient.SqlConnection? _, Microsoft.Data.SqlClient.SqlTransaction? _, object? __) => {