diff --git a/internal/models/user.go b/internal/models/user.go index e313564..426692c 100644 --- a/internal/models/user.go +++ b/internal/models/user.go @@ -1,6 +1,7 @@ package models import ( + "GoMembership/pkg/logger" "fmt" "time" @@ -52,13 +53,22 @@ func (u *User) GenerateMandateReference() string { return fmt.Sprintf("%s%d%s", time.Now().Format("20060102"), u.ID, u.BankAccount.IBAN) } -func (u *User) PasswordMatches(plaintextPassword string) (bool, error) { - match, err := argon2id.ComparePasswordAndHash(plaintextPassword, u.Password) - if err != nil { - return false, err +func (u *User) SetPassword(plaintextPassword string) error { + if plaintextPassword == "" { + return nil } - return match, nil + hash, err := argon2id.CreateHash(plaintextPassword, argon2id.DefaultParams) + if err != nil { + return err + } + u.Password = hash + return nil +} + +func (u *User) PasswordMatches(plaintextPassword string) (bool, error) { + logger.Error.Printf("plaintext: %v user password: %v", plaintextPassword, u.Password) + return argon2id.ComparePasswordAndHash(plaintextPassword, u.Password) } func (u *User) Safe() map[string]interface{} { diff --git a/internal/services/user_service.go b/internal/services/user_service.go index fdf60df..64065d4 100644 --- a/internal/services/user_service.go +++ b/internal/services/user_service.go @@ -8,7 +8,6 @@ import ( "GoMembership/internal/repositories" "GoMembership/pkg/errors" - "github.com/alexedwards/argon2id" "gorm.io/gorm" "time" @@ -55,9 +54,7 @@ func (service *UserService) UpdateUser(user *models.User) (*models.User, error) return nil, errors.ErrUserNotFound } - if user.Password != "" { - setPassword(user.Password, user) - } + user.SetPassword(user.Password) // Validate subscription model selectedModel, err := repositories.GetSubscriptionByName(&user.Membership.SubscriptionModel.Name) @@ -84,7 +81,7 @@ func (service *UserService) UpdateUser(user *models.User) (*models.User, error) func (service *UserService) RegisterUser(user *models.User) (id uint, token string, err error) { - setPassword(user.Password, user) + user.SetPassword(user.Password) user.Status = constants.UnverifiedStatus user.CreatedAt = time.Now() @@ -117,12 +114,3 @@ func (service *UserService) GetUsers(where map[string]interface{}) (*[]models.Us } return service.Repo.GetUsers(where) } - -func setPassword(plaintextPassword string, u *models.User) error { - hash, err := argon2id.CreateHash(plaintextPassword, argon2id.DefaultParams) - if err != nil { - return err - } - u.Password = hash - return nil -}