package register import ( "time" "git.linuxforward.com/byom/byom-onboard/internal/common/jwt" "git.linuxforward.com/byom/byom-onboard/internal/common/models" "git.linuxforward.com/byom/byom-onboard/internal/platform/database" "github.com/google/uuid" ) type registrationService struct { db *database.Database jwt *jwt.JWTClient } func NewRegistrationService(db *database.Database, jwt *jwt.JWTClient) RegistrationService { return ®istrationService{ db: db, jwt: jwt, } } func (s *registrationService) InitiateRegistration(user *models.User) error { // Generate email token token, err := s.jwt.GenerateEmailVerificationToken(user.Email) if err != nil { return err } user.Token = token user.Status = false // Save registration details to database if err := s.db.RegisterUser(user); err != nil { return err } return nil } func (s *registrationService) SendEmail() error { // Send email return nil } func (s *registrationService) ValidateEmail(token string) (*ValidationResult, error) { email, err := s.jwt.VerifyEmailToken(token) if err != nil { return nil, err } // Validate email if err := s.db.ChangeSubscriptionStatus(email); err != nil { return nil, err } // For now, return a dummy validation result return &ValidationResult{ Email: email, // This should come from token validation ValidatedAt: time.Now(), SessionToken: uuid.New().String(), }, nil } func (s *registrationService) CreateSessionToken(email string) (string, error) { return uuid.New().String(), nil }