123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- package register
- import (
- "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"
- "git.linuxforward.com/byom/byom-onboard/internal/platform/mailer"
- "github.com/gin-gonic/gin"
- "github.com/google/uuid"
- )
- type Handler struct {
- mailer *mailer.Mailer
- db *database.Database
- jwt *jwt.JWTClient
- }
- func NewHandler(mailerClient *mailer.Mailer, db *database.Database, jwt *jwt.JWTClient) *Handler {
- return &Handler{
- mailer: mailerClient,
- db: db,
- jwt: jwt,
- }
- }
- func (h *Handler) Register(c *gin.Context) {
- var req models.User
- if err := c.ShouldBindJSON(&req); err != nil {
- c.JSON(400, gin.H{"error": err.Error()})
- return
- }
- // Generate email token
- token, err := h.jwt.GenerateEmailVerificationToken(req.Email)
- if err != nil {
- c.JSON(500, gin.H{"error": err.Error()})
- return
- }
- req.Token = token
- req.Status = false
- // Save registration details to database
- if err := h.db.RegisterUser(&req); err != nil {
- c.JSON(500, gin.H{"error": err.Error()})
- return
- }
- // Send email
- if err := h.mailer.SendVerifyEmail(req.Email, token, req.Plan); err != nil {
- c.JSON(500, gin.H{"error": err.Error()})
- return
- }
- c.JSON(200, gin.H{"message": "Registration initiated successfully"})
- }
- func (h *Handler) CheckEmail(c *gin.Context) {
- var req models.User
- if err := c.ShouldBindJSON(&req); err != nil {
- c.JSON(400, gin.H{"error": err.Error()})
- return
- }
- // Generate email token
- token, err := h.jwt.GenerateEmailVerificationToken(req.Email)
- if err != nil {
- c.JSON(500, gin.H{"error": err.Error()})
- return
- }
- req.ID = uuid.New().String()
- req.Token = token
- req.Status = false
- // Save registration details to database
- if err := h.db.RegisterUser(&req); err != nil {
- c.JSON(500, gin.H{"error": err.Error()})
- return
- }
- // Send email
- if err := h.mailer.SendVerifyEmail(req.Email, token, req.Plan); err != nil {
- c.JSON(500, gin.H{"error": err.Error()})
- return
- }
- c.JSON(200, gin.H{"message": "Email sent successfully"})
- }
- func (h *Handler) ValidateEmail(c *gin.Context) {
- token := c.Query("token")
- result, err := h.jwt.VerifyEmailToken(token)
- if err != nil {
- c.JSON(400, gin.H{"error": err.Error()})
- return
- }
- err = h.db.ChangeSubscriptionStatus(result)
- if err != nil {
- c.JSON(500, gin.H{"error": err.Error()})
- return
- }
- c.JSON(200, result)
- }
|