68 lines
1.6 KiB
Go
68 lines
1.6 KiB
Go
package userpin
|
|
|
|
import (
|
|
"rijig/middleware"
|
|
"rijig/utils"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
)
|
|
|
|
type UserPinHandler struct {
|
|
service UserPinService
|
|
}
|
|
|
|
func NewUserPinHandler(service UserPinService) *UserPinHandler {
|
|
return &UserPinHandler{service}
|
|
}
|
|
|
|
func (h *UserPinHandler) CreateUserPinHandler(c *fiber.Ctx) error {
|
|
|
|
claims, err := middleware.GetUserFromContext(c)
|
|
if err != nil {
|
|
return utils.Unauthorized(c, "Authentication required")
|
|
}
|
|
|
|
if claims.UserID == "" || claims.DeviceID == "" {
|
|
return utils.BadRequest(c, "Invalid user claims")
|
|
}
|
|
|
|
var req RequestPinDTO
|
|
if err := c.BodyParser(&req); err != nil {
|
|
return utils.BadRequest(c, "Invalid request body")
|
|
}
|
|
|
|
if errs, ok := req.ValidateRequestPinDTO(); !ok {
|
|
return utils.ResponseErrorData(c, fiber.StatusBadRequest, "Validation error", errs)
|
|
}
|
|
|
|
pintokenresponse, err := h.service.CreateUserPin(c.Context(), claims.UserID, claims.DeviceID, &req)
|
|
if err != nil {
|
|
if err.Error() == Pinhasbeencreated {
|
|
return utils.BadRequest(c, err.Error())
|
|
}
|
|
return utils.InternalServerError(c, err.Error())
|
|
}
|
|
|
|
return utils.SuccessWithData(c, "PIN created successfully", pintokenresponse)
|
|
}
|
|
|
|
func (h *UserPinHandler) VerifyPinHandler(c *fiber.Ctx) error {
|
|
|
|
claims, err := middleware.GetUserFromContext(c)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
var req RequestPinDTO
|
|
if err := c.BodyParser(&req); err != nil {
|
|
return utils.BadRequest(c, "Invalid request body")
|
|
}
|
|
|
|
token, err := h.service.VerifyUserPin(c.Context(), claims.UserID, claims.DeviceID, &req)
|
|
if err != nil {
|
|
return utils.BadRequest(c, err.Error())
|
|
}
|
|
|
|
return utils.SuccessWithData(c, "PIN verified successfully", token)
|
|
}
|