customer/internal/interface/controller/http/middleware.go
Pasha 34a88a3a70
Some checks failed
Lint / Lint (push) Failing after 1m2s
rename go.mod
2024-11-18 21:44:09 +00:00

56 lines
1.4 KiB
Go

package http
import (
"fmt"
"github.com/gofiber/fiber/v2"
"go.uber.org/zap"
"gitea.pena/PenaSide/customer/internal/models"
)
type MiddleWare struct {
logger *zap.Logger
}
func NewMiddleWare(logger *zap.Logger) *MiddleWare {
return &MiddleWare{
logger: logger,
}
}
func (mw *MiddleWare) Error(ctx *fiber.Ctx, status int, message string, rest ...any) error {
if len(rest) > 0 {
message = fmt.Sprintf(message, rest...)
}
mw.logger.Error(message)
return ctx.Status(status).JSON(models.ResponseErrorHTTP{
StatusCode: status,
Message: message,
})
}
func (mw *MiddleWare) ErrorOld(ctx *fiber.Ctx, err error) error {
mw.logger.Error("error:", zap.Error(err))
return ctx.Status(fiber.StatusInternalServerError).JSON(models.ResponseErrorHTTP{
StatusCode: fiber.StatusInternalServerError,
Message: err.Error(),
})
}
func (mw *MiddleWare) NoAuth(ctx *fiber.Ctx) error {
return mw.Error(ctx, fiber.StatusUnauthorized, "failed to get jwt payload")
}
func (mw *MiddleWare) ExtractUserID(ctx *fiber.Ctx) (string, bool) {
id, ok := ctx.Context().UserValue(models.AuthJWTDecodedUserIDKey).(string)
return id, ok
}
func (mw *MiddleWare) ExtractToken(ctx *fiber.Ctx) (string, bool) {
token, ok := ctx.Context().UserValue(models.AuthJWTDecodedAccessTokenKey).(string)
return token, ok
}
func (mw *MiddleWare) GetHealth(ctx *fiber.Ctx) error {
return ctx.Status(fiber.StatusOK).SendString("OK")
}