feat: email verification flow (not 100% complete)

This commit is contained in:
Florian Sylvain
2024-05-15 12:04:30 +02:00
parent 37647e60d9
commit c929acd4ab
11 changed files with 126 additions and 24 deletions
+21 -4
View File
@@ -44,10 +44,11 @@ func (u *UserRepository) Create(user domain.User) (domain.User, error) {
hashedVerificationCode, _ := bcrypt.GenerateFromPassword([]byte(user.VerificationCode), 12)
creationResult := u.db.Create(&entity.User{
Username: user.Username,
Password: string(hashedPassword),
Email: user.Email,
VerificationCode: string(hashedVerificationCode),
Username: user.Username,
Password: string(hashedPassword),
Email: user.Email,
VerificationCode: string(hashedVerificationCode),
VerificationExpiration: user.VerificationExpiration,
})
if creationResult.Error != nil {
return domain.User{}, creationResult.Error
@@ -82,4 +83,20 @@ func (u *UserRepository) GetByUsername(username string) (domain.User, error) {
return mapUserToDomain(user), nil
}
func (u *UserRepository) UpdateVerificationStatus(userId uint32, isVerified bool) (domain.User, error) {
var user entity.User
err := u.db.Model(&entity.User{}).First(&user, userId).Error
if err != nil {
return domain.User{}, err
}
user.IsVerified = isVerified
err = u.db.Save(&user).Error
if err != nil {
return domain.User{}, err
}
return mapUserToDomain(user), nil
}
var _ gateways.IUserRepository = &UserRepository{}