diff --git a/internal/domain/common.go b/internal/domain/common.go index 04ed151..de1c1bf 100644 --- a/internal/domain/common.go +++ b/internal/domain/common.go @@ -14,8 +14,8 @@ type ResponseWDataFactory[T any] struct { type Response struct { Message string `json:"message"` Data interface{} `json:"data,omitempty"` - Success bool `json:"success"` - StatusCode int `json:"status_code"` + Success bool `json:"success" default:"true"` + StatusCode int `json:"status_code" default:"200"` MetaData interface{} `json:"metadata"` } diff --git a/internal/web_server/handlers/handlers.go b/internal/web_server/handlers/handlers.go index 60c3692..0b2dc22 100644 --- a/internal/web_server/handlers/handlers.go +++ b/internal/web_server/handlers/handlers.go @@ -4,8 +4,8 @@ import ( "Yimaru-Backend/internal/config" "Yimaru-Backend/internal/services/arifpay" "Yimaru-Backend/internal/services/assessment" - course_management "Yimaru-Backend/internal/services/course_management" "Yimaru-Backend/internal/services/authentication" + course_management "Yimaru-Backend/internal/services/course_management" notificationservice "Yimaru-Backend/internal/services/notification" "Yimaru-Backend/internal/services/recommendation" @@ -57,6 +57,7 @@ func New( ) *Handler { return &Handler{ assessmentSvc: assessmentSvc, + courseMgmtSvc: courseMgmtSvc, arifpaySvc: arifpaySvc, logger: logger, settingSvc: settingSvc, diff --git a/internal/web_server/handlers/user.go b/internal/web_server/handlers/user.go index 4017b18..a925286 100644 --- a/internal/web_server/handlers/user.go +++ b/internal/web_server/handlers/user.go @@ -3,6 +3,7 @@ package handlers import ( "Yimaru-Backend/internal/domain" "Yimaru-Backend/internal/services/authentication" + jwtutil "Yimaru-Backend/internal/web_server/jwt" "Yimaru-Backend/internal/web_server/response" "errors" "fmt" @@ -553,9 +554,34 @@ func (h *Handler) VerifyOtp(c *fiber.Ctx) error { }) } + accessToken, err := jwtutil.CreateJwt( + loginSuccess.UserId, + loginSuccess.Role, + h.jwtConfig.JwtAccessKey, + h.jwtConfig.JwtAccessExpiry, + ) + + if err != nil { + h.mongoLoggerSvc.Error("Failed to create access token", + zap.Int("status_code", fiber.StatusInternalServerError), + zap.Int64("user_id", loginSuccess.UserId), + zap.Error(err), + zap.Time("timestamp", time.Now()), + ) + return c.Status(fiber.StatusInternalServerError).JSON(domain.ErrorResponse{ + Message: "Failed to verify otp", + Error: "Failed to generate access token", + }) + } + return c.Status(fiber.StatusOK).JSON(domain.Response{ Message: "OTP verified successfully", - Data: loginSuccess, + Data: loginUserRes{ + AccessToken: accessToken, + RefreshToken: loginSuccess.RfToken, + Role: string(loginSuccess.Role), + UserID: loginSuccess.UserId, + }, }) }