email.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package register
  2. import (
  3. "time"
  4. "git.linuxforward.com/byom/byom-onboard/internal/common/jwt"
  5. "git.linuxforward.com/byom/byom-onboard/internal/common/models"
  6. "git.linuxforward.com/byom/byom-onboard/internal/platform/database"
  7. "github.com/google/uuid"
  8. )
  9. type registrationService struct {
  10. db *database.Database
  11. jwt *jwt.JWTClient
  12. }
  13. func NewRegistrationService(db *database.Database, jwt *jwt.JWTClient) RegistrationService {
  14. return &registrationService{
  15. db: db,
  16. jwt: jwt,
  17. }
  18. }
  19. func (s *registrationService) InitiateRegistration(user *models.User) error {
  20. // Generate email token
  21. token, err := s.jwt.GenerateEmailVerificationToken(user.Email)
  22. if err != nil {
  23. return err
  24. }
  25. user.Token = token
  26. user.Status = false
  27. // Save registration details to database
  28. if err := s.db.RegisterUser(user); err != nil {
  29. return err
  30. }
  31. // Send email
  32. if err := s.SendEmail(); err != nil {
  33. return err
  34. }
  35. return nil
  36. }
  37. func (s *registrationService) SendEmail() error {
  38. // Send email
  39. return nil
  40. }
  41. func (s *registrationService) ValidateEmail(token string) (*ValidationResult, error) {
  42. email, err := s.jwt.VerifyEmailToken(token)
  43. if err != nil {
  44. return nil, err
  45. }
  46. // Validate email
  47. if err := s.db.ChangeSubscriptionStatus(email); err != nil {
  48. return nil, err
  49. }
  50. // For now, return a dummy validation result
  51. return &ValidationResult{
  52. Email: email, // This should come from token validation
  53. ValidatedAt: time.Now(),
  54. SessionToken: uuid.New().String(),
  55. }, nil
  56. }
  57. func (s *registrationService) CreateSessionToken(email string) (string, error) {
  58. return uuid.New().String(), nil
  59. }