mirror of
https://github.com/bitwarden/server.git
synced 2026-02-09 02:13:11 +08:00
Refactor BuildVerifyUserEmailAction to accept User entity instead of user ID
- Updated IUserRepository and its implementations to change the parameter of BuildVerifyUserEmailAction from Guid userId to User user. - Modified related repository methods in Dapper and Entity Framework to utilize the User entity for email verification. - Adjusted tests to reflect the new method signature, ensuring proper functionality and integration with the updated user verification process.
This commit is contained in:
@@ -328,7 +328,7 @@ public class InitPendingOrganizationCommand : IInitPendingOrganizationCommand
|
||||
[
|
||||
_organizationRepository.BuildUpdateOrganizationAction(org),
|
||||
_organizationUserRepository.BuildConfirmOrganizationUserAction(orgUser),
|
||||
_userRepository.BuildVerifyUserEmailAction(request.User.Id),
|
||||
_userRepository.BuildVerifyUserEmailAction(request.User),
|
||||
];
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(request.CollectionName))
|
||||
|
||||
@@ -97,9 +97,9 @@ public interface IUserRepository : IRepository<User, Guid>
|
||||
/// <summary>
|
||||
/// Builds an action that verifies a user's email if not already verified.
|
||||
/// </summary>
|
||||
/// <param name="userId">The user ID to verify</param>
|
||||
/// <param name="user">The user entity to verify</param>
|
||||
/// <returns>An action that can be executed within a transaction</returns>
|
||||
OrganizationInitializationUpdateAction BuildVerifyUserEmailAction(Guid userId);
|
||||
OrganizationInitializationUpdateAction BuildVerifyUserEmailAction(User user);
|
||||
}
|
||||
|
||||
public delegate Task UpdateUserData(Microsoft.Data.SqlClient.SqlConnection? connection = null,
|
||||
|
||||
@@ -549,16 +549,10 @@ public class UserRepository : Repository<User, Guid>, IUserRepository
|
||||
}
|
||||
}
|
||||
|
||||
public OrganizationInitializationUpdateAction BuildVerifyUserEmailAction(Guid userId)
|
||||
public OrganizationInitializationUpdateAction BuildVerifyUserEmailAction(User user)
|
||||
{
|
||||
return async (SqlConnection? connection, SqlTransaction? transaction, object? context) =>
|
||||
{
|
||||
var user = (await connection!.QueryAsync<User>(
|
||||
"[dbo].[User_ReadById]",
|
||||
new { Id = userId },
|
||||
commandType: CommandType.StoredProcedure,
|
||||
transaction: transaction)).SingleOrDefault();
|
||||
|
||||
if (user != null && !user.EmailVerified)
|
||||
{
|
||||
user.EmailVerified = true;
|
||||
|
||||
@@ -576,17 +576,17 @@ public class UserRepository : Repository<Core.Entities.User, User, Guid>, IUserR
|
||||
}
|
||||
}
|
||||
|
||||
public OrganizationInitializationUpdateAction BuildVerifyUserEmailAction(Guid userId)
|
||||
public OrganizationInitializationUpdateAction BuildVerifyUserEmailAction(Core.Entities.User user)
|
||||
{
|
||||
return async (SqlConnection? _, SqlTransaction? _, object? context) =>
|
||||
{
|
||||
var dbContext = (DatabaseContext)context!;
|
||||
|
||||
var user = await dbContext.Users.FindAsync(userId);
|
||||
if (user != null && !user.EmailVerified)
|
||||
var efUser = await dbContext.Users.FindAsync(user.Id);
|
||||
if (efUser != null && !efUser.EmailVerified)
|
||||
{
|
||||
user.EmailVerified = true;
|
||||
user.RevisionDate = DateTime.UtcNow;
|
||||
efUser.EmailVerified = true;
|
||||
efUser.RevisionDate = DateTime.UtcNow;
|
||||
|
||||
await dbContext.SaveChangesAsync();
|
||||
}
|
||||
|
||||
@@ -615,7 +615,7 @@ public class InitPendingOrganizationCommandTests
|
||||
.Returns(callInfo => new OrganizationInitializationUpdateAction((conn, trans, ctx) => Task.CompletedTask));
|
||||
|
||||
sutProvider.GetDependency<IUserRepository>()
|
||||
.BuildVerifyUserEmailAction(user.Id)
|
||||
.BuildVerifyUserEmailAction(Arg.Any<User>())
|
||||
.Returns(new OrganizationInitializationUpdateAction((conn, trans, ctx) => Task.CompletedTask));
|
||||
|
||||
sutProvider.GetDependency<ICollectionRepository>()
|
||||
|
||||
@@ -320,7 +320,7 @@ public class OrganizationRepositoryTests
|
||||
{
|
||||
organizationRepository.BuildUpdateOrganizationAction(organization),
|
||||
organizationUserRepository.BuildConfirmOrganizationUserAction(organizationUser),
|
||||
userRepository.BuildVerifyUserEmailAction(user.Id)
|
||||
userRepository.BuildVerifyUserEmailAction(user)
|
||||
};
|
||||
|
||||
var collection = new Collection
|
||||
@@ -403,7 +403,7 @@ public class OrganizationRepositoryTests
|
||||
{
|
||||
organizationRepository.BuildUpdateOrganizationAction(organization),
|
||||
organizationUserRepository.BuildConfirmOrganizationUserAction(organizationUser),
|
||||
userRepository.BuildVerifyUserEmailAction(user.Id)
|
||||
userRepository.BuildVerifyUserEmailAction(user)
|
||||
};
|
||||
|
||||
// Execute all updates in single transaction
|
||||
@@ -453,7 +453,7 @@ public class OrganizationRepositoryTests
|
||||
{
|
||||
organizationRepository.BuildUpdateOrganizationAction(organization),
|
||||
organizationUserRepository.BuildConfirmOrganizationUserAction(organizationUser),
|
||||
userRepository.BuildVerifyUserEmailAction(user.Id),
|
||||
userRepository.BuildVerifyUserEmailAction(user),
|
||||
// Add a failing action to trigger rollback
|
||||
(Microsoft.Data.SqlClient.SqlConnection? _, Microsoft.Data.SqlClient.SqlTransaction? _, object? __) =>
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user