init
This commit is contained in:
33
internal/adapter/handlers/http/middlewares/auth.go
Normal file
33
internal/adapter/handlers/http/middlewares/auth.go
Normal 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()
|
||||
}
|
20
internal/adapter/handlers/http/middlewares/ws.go
Normal file
20
internal/adapter/handlers/http/middlewares/ws.go
Normal 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
|
||||
}
|
Reference in New Issue
Block a user