legalgo-BE-go/internal/services/auth/register_user.go

57 lines
1.1 KiB
Go
Raw Normal View History

2025-02-24 16:48:20 +08:00
package authsvc
import (
"errors"
authdomain "legalgo-BE-go/internal/domain/auth"
"legalgo-BE-go/internal/utilities/utils"
2025-02-24 16:48:20 +08:00
"github.com/google/uuid"
)
func (a *AuthSvc) RegisterUser(spec authdomain.RegisterUserReq) (string, error) {
2025-02-24 19:47:40 +08:00
_, err := a.userRepo.GetUserByEmail(spec.Email)
if err == nil {
return "", errors.New("this email address is already in use")
}
if spec.SubscribePlanID == "" {
subsPlan, err := a.subsPlanRepo.GetDefault()
if err != nil {
return "", err
}
spec.SubscribePlanID = subsPlan.ID
}
subsId, err := a.subsRepo.Create(spec.SubscribePlanID)
if err != nil {
return "", nil
2025-02-24 16:48:20 +08:00
}
hashedPwd, err := HashPassword(spec.Password)
if err != nil {
return "", err
}
user := authdomain.User{
ID: uuid.NewString(),
2025-02-24 16:48:20 +08:00
Email: spec.Email,
SubscribeID: subsId,
Password: hashedPwd,
Phone: spec.Phone,
}
_, err = a.userRepo.CreateUser(&user)
if err != nil {
return "", errors.New(err.Error())
}
token, err := utils.GenerateToken(spec.Email)
if err != nil {
return "", errors.New(err.Error())
}
return token, nil
}