package authsvc import ( "errors" authdomain "github.com/ardeman/project-legalgo-go/internal/domain/auth" "github.com/ardeman/project-legalgo-go/internal/utilities/utils" "github.com/google/uuid" ) func (a *AuthSvc) RegisterUser(spec authdomain.RegisterUserReq) (string, error) { _, err := a.userRepo.GetUserByEmail(spec.Email) if err == nil { return "", errors.New("this email address is already in use") } var subsId string if spec.SubscribePlanID != "" { subsId, err = a.subsRepo.Create(spec.SubscribePlanID) if err != nil { return "", nil } } hashedPwd, err := HashPassword(spec.Password) if err != nil { return "", err } user := authdomain.User{ ID: uuid.New(), 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 }