This commit is contained in:
2024-10-13 13:31:58 +04:00
commit aec8d7ed48
54 changed files with 2827 additions and 0 deletions

View File

@@ -0,0 +1,33 @@
package middlewares
import (
"fmt"
"github.com/aykhans/oh-my-chat/internal/core/domain"
"github.com/aykhans/oh-my-chat/internal/core/port"
"github.com/gofiber/fiber/v2"
)
type AuthMiddleware struct {
tokenService port.TokenService
}
func NewAuthMiddleware(tokenService port.TokenService) *AuthMiddleware {
return &AuthMiddleware{tokenService}
}
func (authMiddleware *AuthMiddleware) IsUser(ctx *fiber.Ctx) error {
token := ctx.Get("Authorization")
if token == "" {
return fiber.NewError(fiber.StatusBadRequest, "Authorization header is required")
}
payload, err := authMiddleware.tokenService.VerifyToken(token[7:])
if err != nil {
if err == domain.ErrInternal {
fiber.NewError(fiber.StatusInternalServerError, "Internal Server Error")
}
return fiber.NewError(fiber.StatusUnauthorized, fmt.Sprintf("Unauthorized: %v", err))
}
ctx.Locals("authPayload", payload)
return ctx.Next()
}

View File

@@ -0,0 +1,20 @@
package middlewares
import (
"github.com/gofiber/contrib/websocket"
"github.com/gofiber/fiber/v2"
)
type WSMiddleware struct{}
func NewWSMiddleware() *WSMiddleware {
return &WSMiddleware{}
}
func (wsMiddleware *WSMiddleware) Upgrade(ctx *fiber.Ctx) error {
if websocket.IsWebSocketUpgrade(ctx) {
ctx.Locals("allowed", true)
return ctx.Next()
}
return fiber.ErrUpgradeRequired
}