33 lines
729 B
Go
33 lines
729 B
Go
package services
|
|
|
|
import (
|
|
"GoMembership/internal/models"
|
|
"GoMembership/internal/repositories"
|
|
"golang.org/x/crypto/bcrypt"
|
|
"time"
|
|
)
|
|
|
|
type UserService interface {
|
|
RegisterUser(user *models.User) error
|
|
}
|
|
|
|
type userService struct {
|
|
repo repositories.UserRepository
|
|
}
|
|
|
|
func NewUserService(repo repositories.UserRepository) UserService {
|
|
return &userService{repo}
|
|
}
|
|
|
|
func (s *userService) RegisterUser(user *models.User) error {
|
|
hashedPassword, err := bcrypt.GenerateFromPassword([]byte(user.Password), bcrypt.DefaultCost)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
user.Password = string(hashedPassword)
|
|
user.CreatedAt = time.Now()
|
|
user.UpdatedAt = time.Now()
|
|
user.MandateDateSigned = time.Now()
|
|
return s.repo.CreateUser(user)
|
|
}
|