refac: several unverified users can exist at once: an empty reset or verification code is stored as no value so it doesn't break the unique constraint, and deleting a user removes the row so the same username and email can register again

This commit is contained in:
fsylvain committed 2026-09-24 01:59:24 +02:00
1 parent 0b4e614ec9
commit 6e9e108033
6 files changed
+377 -16

No files matched your search

@@ -30,8 +30,9 @@ func (u *UserRepository) Create(user domainUser.User) (domainUser.User, error) {
creationResult := u.db.Create(&entity.User{
Username: user.Username,
Password: user.Password,
PasswordResetCode: mappers.DomainToNullableString(user.PasswordResetCode),
Email: user.Email,
VerificationCode: user.VerificationCode,
VerificationCode: mappers.DomainToNullableString(user.VerificationCode),
VerificationExpiration: user.VerificationExpiration,
})
if creationResult.Error != nil {
@@ -121,7 +122,7 @@ func (u *UserRepository) UpdatePasswordResetCode(userId uint32, code string) (do
return domainUser.User{}, mapNotFoundErr(err, domainUser.ErrUserNotFound)
}
localUser.PasswordResetCode = code
localUser.PasswordResetCode = mappers.DomainToNullableString(code)
err = u.db.Save(&localUser).Error
if err != nil {
return domainUser.User{}, err