middleware

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 25, 2025 License: MIT Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func APICORS

func APICORS() fiber.Handler

APICORS creates a CORS middleware specifically for API endpoints

func APICompression

func APICompression() fiber.Handler

APICompression creates a compression middleware optimized for API responses

func APILogger

func APILogger() fiber.Handler

APILogger creates a logger middleware for API endpoints

func APIRecovery

func APIRecovery() fiber.Handler

APIRecovery creates a recovery middleware for API endpoints

func APISecurity

func APISecurity() fiber.Handler

APISecurity creates a security middleware for API endpoints

func AccessLogger

func AccessLogger() fiber.Handler

AccessLogger creates a logger middleware for access logs

func ApplyRateLimits

func ApplyRateLimits(config RateLimitConfig) []fiber.Handler

ApplyRateLimits applies multiple rate limits

func Brotli

func Brotli() fiber.Handler

Brotli creates a Brotli compression middleware

func CORS

func CORS(config ...CORSConfig) fiber.Handler

CORS creates a CORS middleware

func CSRFMetaTag

func CSRFMetaTag(ctx *fiber.Ctx) string

CSRFMetaTag generates a meta tag for CSRF token

func CSRFMiddleware

func CSRFMiddleware(config ...CSRFConfig) fiber.Handler

CSRFMiddleware creates a CSRF middleware with default configuration

func CSRFTokenField

func CSRFTokenField(ctx *fiber.Ctx) string

CSRFTokenField generates a hidden input field for CSRF token

func CacheControl

func CacheControl(maxAge time.Duration, public bool) fiber.Handler

CacheControl creates a cache control middleware

func Compression

func Compression(config ...CompressionConfig) fiber.Handler

Compression creates a compression middleware

func ConditionalCompression

func ConditionalCompression(config CompressionConfig) fiber.Handler

ConditionalCompression creates a compression middleware with path exclusions

func CustomLogger

func CustomLogger(format string, output *os.File) fiber.Handler

CustomLogger creates a logger middleware with custom configuration

func CustomRecovery

func CustomRecovery(errorHandler func(*fiber.Ctx, error) error) fiber.Handler

CustomRecovery creates a recovery middleware with custom error handler

func Deflate

func Deflate() fiber.Handler

Deflate creates a Deflate compression middleware

func DevelopmentCORS

func DevelopmentCORS() fiber.Handler

DevelopmentCORS creates a CORS middleware for development

func DevelopmentLogger

func DevelopmentLogger() fiber.Handler

DevelopmentLogger creates a logger middleware for development

func DevelopmentRecovery

func DevelopmentRecovery() fiber.Handler

DevelopmentRecovery creates a recovery middleware for development

func DevelopmentSecurity

func DevelopmentSecurity() fiber.Handler

DevelopmentSecurity creates a security middleware for development

func ETag

func ETag() fiber.Handler

ETag creates an ETag middleware

func ErrorLogger

func ErrorLogger() fiber.Handler

ErrorLogger creates a logger middleware that only logs errors

func GetCSRFToken

func GetCSRFToken(ctx *fiber.Ctx) string

GetCSRFToken retrieves the CSRF token from context

func GetRequestID

func GetRequestID(c *fiber.Ctx) string

GetRequestID retrieves the request ID from context

func GetSessionID

func GetSessionID(c *fiber.Ctx) (string, bool)

GetSessionID gets the session ID from context

func GetUserEmail

func GetUserEmail(c *fiber.Ctx) (string, bool)

GetUserEmail gets the user email from context

func GetUserID

func GetUserID(c *fiber.Ctx) (string, bool)

GetUserID gets the user ID from context

func GetUserRoles

func GetUserRoles(c *fiber.Ctx) ([]string, bool)

GetUserRoles gets the user roles from context

func Gzip

func Gzip() fiber.Handler

Gzip creates a GZIP compression middleware

func HasAnyRole

func HasAnyRole(c *fiber.Ctx, roles ...string) bool

HasAnyRole checks if the user has any of the specified roles

func HasRole

func HasRole(c *fiber.Ctx, role string) bool

HasRole checks if the user has a specific role

func Helmet

func Helmet() fiber.Handler

Helmet creates a security middleware with helmet-style headers

func IsAuthenticated

func IsAuthenticated(c *fiber.Ctx) bool

IsAuthenticated checks if the user is authenticated

func Logger

func Logger(config ...LoggerConfig) fiber.Handler

Logger creates a logger middleware

func NoCache

func NoCache() fiber.Handler

NoCache creates a no-cache middleware

func ProductionCORS

func ProductionCORS(allowedOrigins []string) fiber.Handler

ProductionCORS creates a CORS middleware for production

func ProductionLogger

func ProductionLogger() fiber.Handler

ProductionLogger creates a logger middleware for production

func ProductionRecovery

func ProductionRecovery() fiber.Handler

ProductionRecovery creates a recovery middleware for production

func ProductionSecurity

func ProductionSecurity() fiber.Handler

ProductionSecurity creates a security middleware for production

func RateLimit

func RateLimit(config ...RateLimiterConfig) fiber.Handler

RateLimit creates a rate limiting middleware

func RateLimitByIP

func RateLimitByIP(max int, expiration time.Duration) fiber.Handler

RateLimitByIP creates a rate limiter that limits by IP address

func RateLimitByRoute

func RateLimitByRoute(max int, expiration time.Duration) fiber.Handler

RateLimitByRoute creates a rate limiter that limits by route

func RateLimitByUser

func RateLimitByUser(max int, expiration time.Duration) fiber.Handler

RateLimitByUser creates a rate limiter that limits by user ID

func Recovery

func Recovery(config ...RecoveryConfig) fiber.Handler

Recovery creates a recovery middleware

func RequestID

func RequestID(config ...RequestIDConfig) fiber.Handler

RequestID creates a request ID middleware

func RequestIDFromHeader

func RequestIDFromHeader(headerName string) fiber.Handler

RequestIDFromHeader creates a request ID middleware that uses existing header

func RequestIDWithPrefix

func RequestIDWithPrefix(prefix string) fiber.Handler

RequestIDWithPrefix creates a request ID middleware with a prefix

func RequireAPIKey

func RequireAPIKey() fiber.Handler

func RequireAnyPermission

func RequireAnyPermission(permissions ...string) fiber.Handler

func RequireAnyRole

func RequireAnyRole(roles ...string) fiber.Handler

func RequireAuth

func RequireAuth() fiber.Handler

Convenience functions for common guard patterns

func RequireGuest

func RequireGuest() fiber.Handler

func RequireIP

func RequireIP(allowedIPs ...string) fiber.Handler

func RequireIPRange

func RequireIPRange(allowedRanges ...string) fiber.Handler

func RequirePermission

func RequirePermission(permission string) fiber.Handler

func RequireRole

func RequireRole(role string) fiber.Handler

func RequireVerified

func RequireVerified() fiber.Handler

func Security

func Security(config ...SecurityConfig) fiber.Handler

Security creates a security middleware

func SessionClear

func SessionClear(ctx *fiber.Ctx)

func SessionDelete

func SessionDelete(ctx *fiber.Ctx, key string)

func SessionDestroy

func SessionDestroy(ctx *fiber.Ctx)

func SessionGet

func SessionGet(ctx *fiber.Ctx, key string) (interface{}, bool)

Session helpers

func SessionMiddleware

func SessionMiddleware(config ...SessionConfig) fiber.Handler

SessionMiddleware creates a session middleware with default configuration

func SessionSet

func SessionSet(ctx *fiber.Ctx, key string, value interface{})

func SetRequestID

func SetRequestID(c *fiber.Ctx, requestID string)

SetRequestID sets a custom request ID in context

func ShortRequestID

func ShortRequestID() fiber.Handler

ShortRequestID creates a request ID middleware that generates short IDs

func UUIDRequestID

func UUIDRequestID() fiber.Handler

UUIDRequestID creates a request ID middleware that generates UUID-style IDs

func Vary

func Vary(headers ...string) fiber.Handler

Vary creates a Vary header middleware

func WebCORS

func WebCORS(allowedOrigins []string) fiber.Handler

WebCORS creates a CORS middleware for web endpoints

func WebCompression

func WebCompression() fiber.Handler

WebCompression creates a compression middleware optimized for web content

func WebLogger

func WebLogger() fiber.Handler

WebLogger creates a logger middleware for web endpoints

func WebRecovery

func WebRecovery() fiber.Handler

WebRecovery creates a recovery middleware for web endpoints

func WebSecurity

func WebSecurity() fiber.Handler

WebSecurity creates a security middleware for web endpoints

Types

type AuthMiddleware

type AuthMiddleware struct {
	// contains filtered or unexported fields
}

AuthMiddleware handles authentication

func NewAuthMiddleware

func NewAuthMiddleware(jwtManager *auth.JWTManager) *AuthMiddleware

NewAuthMiddleware creates a new auth middleware

func (*AuthMiddleware) OptionalAuth

func (a *AuthMiddleware) OptionalAuth() fiber.Handler

OptionalAuth middleware that adds user info to context if authenticated

func (*AuthMiddleware) RequireAnyRole

func (a *AuthMiddleware) RequireAnyRole(roles ...string) fiber.Handler

RequireAnyRole middleware that requires any of the specified roles

func (*AuthMiddleware) RequireAuth

func (a *AuthMiddleware) RequireAuth() fiber.Handler

RequireAuth middleware that requires authentication

func (*AuthMiddleware) RequirePermission

func (a *AuthMiddleware) RequirePermission(permission string) fiber.Handler

RequirePermission middleware that requires a specific permission

func (*AuthMiddleware) RequireRole

func (a *AuthMiddleware) RequireRole(role string) fiber.Handler

RequireRole middleware that requires a specific role

type CORSConfig

type CORSConfig struct {
	AllowOrigins     []string // Allowed origins
	AllowMethods     []string // Allowed HTTP methods
	AllowHeaders     []string // Allowed headers
	ExposeHeaders    []string // Headers to expose to client
	AllowCredentials bool     // Allow credentials
	MaxAge           int      // Max age for preflight requests
}

CORSConfig holds configuration for CORS middleware

func DefaultCORSConfig

func DefaultCORSConfig() CORSConfig

DefaultCORSConfig returns default CORS configuration

type CSRF

type CSRF struct {
	// contains filtered or unexported fields
}

CSRF implements CSRF protection middleware

func NewCSRF

func NewCSRF(config CSRFConfig) *CSRF

NewCSRF creates a new CSRF middleware

func (*CSRF) Handler

func (c *CSRF) Handler() fiber.Handler

Handler returns the CSRF middleware handler

type CSRFConfig

type CSRFConfig struct {
	TokenLength    int                           // Length of CSRF token
	TokenName      string                        // Name of the token in form/header
	CookieName     string                        // Name of the cookie to store token
	CookiePath     string                        // Path for the cookie
	CookieDomain   string                        // Domain for the cookie
	CookieSecure   bool                          // Secure flag for cookie
	CookieHTTPOnly bool                          // HTTPOnly flag for cookie
	CookieSameSite string                        // SameSite attribute for cookie
	Expiration     time.Duration                 // Token expiration time
	HeaderName     string                        // Header name for token
	ErrorHandler   func(*fiber.Ctx, error) error // Error handler
}

CSRFConfig holds configuration for CSRF middleware

func DefaultCSRFConfig

func DefaultCSRFConfig() CSRFConfig

DefaultCSRFConfig returns default CSRF configuration

type CompressionConfig

type CompressionConfig struct {
	Level    int      // Compression level (1-9)
	Types    []string // Content types to compress
	MinSize  int      // Minimum size to compress
	Excluded []string // Excluded paths
}

CompressionConfig holds configuration for compression middleware

func DefaultCompressionConfig

func DefaultCompressionConfig() CompressionConfig

DefaultCompressionConfig returns default compression configuration

type Guard

type Guard struct {
	// contains filtered or unexported fields
}

Guard implements role-based access control middleware

func NewGuard

func NewGuard(config ...GuardConfig) *Guard

NewGuard creates a guard middleware with default configuration

func NewGuardMiddleware

func NewGuardMiddleware(config GuardConfig) *Guard

NewGuardMiddleware creates a new guard middleware

func (*Guard) RequireAPIKey

func (g *Guard) RequireAPIKey() fiber.Handler

RequireAPIKey requires valid API key

func (*Guard) RequireAnyPermission

func (g *Guard) RequireAnyPermission(permissions ...string) fiber.Handler

RequireAnyPermission requires user to have any of the specified permissions

func (*Guard) RequireAnyRole

func (g *Guard) RequireAnyRole(roles ...string) fiber.Handler

RequireAnyRole requires user to have any of the specified roles

func (*Guard) RequireAuth

func (g *Guard) RequireAuth() fiber.Handler

RequireAuth requires user to be authenticated

func (*Guard) RequireGuest

func (g *Guard) RequireGuest() fiber.Handler

RequireGuest requires user to be a guest (not authenticated)

func (*Guard) RequireIP

func (g *Guard) RequireIP(allowedIPs ...string) fiber.Handler

RequireIP allows access only from specific IP addresses

func (*Guard) RequireIPRange

func (g *Guard) RequireIPRange(allowedRanges ...string) fiber.Handler

RequireIPRange allows access only from specific IP ranges

func (*Guard) RequirePermission

func (g *Guard) RequirePermission(permission string) fiber.Handler

RequirePermission requires user to have specific permission

func (*Guard) RequireRole

func (g *Guard) RequireRole(role string) fiber.Handler

RequireRole requires user to have specific role

func (*Guard) RequireVerified

func (g *Guard) RequireVerified() fiber.Handler

RequireVerified requires user to be verified

type GuardConfig

type GuardConfig struct {
	ErrorHandler func(*fiber.Ctx, error) error // Error handler for unauthorized access
	UserKey      string                        // Key to retrieve user from context
	RoleKey      string                        // Key to retrieve user role from context
}

GuardConfig holds configuration for guard middleware

func DefaultGuardConfig

func DefaultGuardConfig() GuardConfig

DefaultGuardConfig returns default guard configuration

type LoggerConfig

type LoggerConfig struct {
	Format     string                // Log format
	TimeFormat string                // Time format
	TimeZone   string                // Time zone
	Output     *os.File              // Output destination
	SkipPaths  []string              // Paths to skip logging
	SkipFunc   func(*fiber.Ctx) bool // Function to determine if request should be skipped
}

LoggerConfig holds configuration for logger middleware

func DefaultLoggerConfig

func DefaultLoggerConfig() LoggerConfig

DefaultLoggerConfig returns default logger configuration

type MemoryStore

type MemoryStore struct {
	// contains filtered or unexported fields
}

MemoryStore implements SessionStore using in-memory storage

func NewMemoryStore

func NewMemoryStore() *MemoryStore

NewMemoryStore creates a new memory store

func (*MemoryStore) Cleanup

func (ms *MemoryStore) Cleanup() error

Cleanup removes expired sessions

func (*MemoryStore) Delete

func (ms *MemoryStore) Delete(sessionID string) error

Delete removes a session

func (*MemoryStore) Get

func (ms *MemoryStore) Get(sessionID string) (*Session, error)

Get retrieves a session by ID

func (*MemoryStore) Set

func (ms *MemoryStore) Set(sessionID string, session *Session) error

Set stores a session

type MiddlewareConfig

type MiddlewareConfig struct {
	Environment       string
	EnableCORS        bool
	EnableCSRF        bool
	EnableSession     bool
	EnableRateLimit   bool
	EnableCompression bool
	EnableSecurity    bool
	EnableLogging     bool
	EnableRecovery    bool
	EnableRequestID   bool
}

Middleware configuration helpers

func APIConfig

func APIConfig() MiddlewareConfig

API configuration

func DefaultConfig

func DefaultConfig() MiddlewareConfig

Default configuration

func ProductionConfig

func ProductionConfig() MiddlewareConfig

Production configuration

func WebConfig

func WebConfig() MiddlewareConfig

Web configuration

type MiddlewareStack

type MiddlewareStack struct {
	// contains filtered or unexported fields
}

MiddlewareStack represents a collection of middleware

func APIStack

func APIStack() *MiddlewareStack

APIStack returns the API middleware stack

func AuthStack

func AuthStack() *MiddlewareStack

AuthStack returns the authentication middleware stack

func ConfiguredStack

func ConfiguredStack(config MiddlewareConfig) *MiddlewareStack

ConfiguredStack creates a middleware stack based on configuration

func CustomStack

func CustomStack(middlewares ...fiber.Handler) *MiddlewareStack

CustomStack creates a custom middleware stack

func DefaultStack

func DefaultStack() *MiddlewareStack

DefaultStack returns the default middleware stack

func DevelopmentStack

func DevelopmentStack() *MiddlewareStack

DevelopmentStack returns the development middleware stack

func GetStackForEnvironment

func GetStackForEnvironment(env string) *MiddlewareStack

Environment-specific middleware stacks

func NewMiddlewareStack

func NewMiddlewareStack() *MiddlewareStack

NewMiddlewareStack creates a new middleware stack

func ProductionStack

func ProductionStack() *MiddlewareStack

ProductionStack returns the production middleware stack

func RateLimitedStack

func RateLimitedStack() *MiddlewareStack

RateLimitedStack returns a rate-limited middleware stack

func SecureStack

func SecureStack() *MiddlewareStack

SecureStack returns a highly secure middleware stack

func WebStack

func WebStack() *MiddlewareStack

WebStack returns the web middleware stack

func (*MiddlewareStack) Add

func (ms *MiddlewareStack) Add(middleware fiber.Handler) *MiddlewareStack

Add adds a middleware to the stack

func (*MiddlewareStack) Apply

func (ms *MiddlewareStack) Apply(app *fiber.App)

Apply applies all middleware to the app

func (*MiddlewareStack) ApplyToGroup

func (ms *MiddlewareStack) ApplyToGroup(group fiber.Router)

ApplyToGroup applies all middleware to a group

type RateLimitConfig

type RateLimitConfig struct {
	Global   RateLimiterConfig // Global rate limit
	PerIP    RateLimiterConfig // Per IP rate limit
	PerUser  RateLimiterConfig // Per user rate limit
	PerRoute RateLimiterConfig // Per route rate limit
}

RateLimitConfig holds configuration for different rate limit types

func DefaultRateLimitConfig

func DefaultRateLimitConfig() RateLimitConfig

DefaultRateLimitConfig returns default rate limit configuration

type RateLimiter

type RateLimiter struct {
	// contains filtered or unexported fields
}

RateLimiter implements rate limiting using sliding window

func NewRateLimiter

func NewRateLimiter(config RateLimiterConfig) *RateLimiter

NewRateLimiter creates a new rate limiter

func (*RateLimiter) Allow

func (rl *RateLimiter) Allow(key string) bool

Allow checks if a request is allowed

type RateLimiterConfig

type RateLimiterConfig struct {
	Max        int                     // Maximum number of requests
	Expiration time.Duration           // Time window for rate limiting
	KeyFunc    func(*fiber.Ctx) string // Function to generate rate limit key
	Message    string                  // Error message when rate limit exceeded
	StatusCode int                     // HTTP status code when rate limit exceeded
}

RateLimiterConfig holds configuration for rate limiting

func DefaultRateLimiterConfig

func DefaultRateLimiterConfig() RateLimiterConfig

DefaultRateLimiterConfig returns default configuration

type RecoveryConfig

type RecoveryConfig struct {
	EnableStackTrace bool                          // Enable stack trace in response
	StackTraceSize   int                           // Stack trace size limit
	ErrorHandler     func(*fiber.Ctx, error) error // Custom error handler
}

RecoveryConfig holds configuration for recovery middleware

func DefaultRecoveryConfig

func DefaultRecoveryConfig() RecoveryConfig

DefaultRecoveryConfig returns default recovery configuration

type RedisRateLimiter

type RedisRateLimiter struct {
	// This would be implemented with Redis client
	// For now, we'll use the in-memory implementation
	*RateLimiter
}

RedisRateLimiter implements rate limiting using Redis (for distributed systems)

func NewRedisRateLimiter

func NewRedisRateLimiter(config RateLimiterConfig) *RedisRateLimiter

NewRedisRateLimiter creates a new Redis-based rate limiter

type RequestIDConfig

type RequestIDConfig struct {
	Header     string        // Header name for request ID
	Generator  func() string // Function to generate request ID
	ContextKey string        // Key to store request ID in context
}

RequestIDConfig holds configuration for request ID middleware

func DefaultRequestIDConfig

func DefaultRequestIDConfig() RequestIDConfig

DefaultRequestIDConfig returns default request ID configuration

type SecurityConfig

type SecurityConfig struct {
	XSSProtection             bool   // XSS Protection header
	ContentTypeNosniff        bool   // Content Type No Sniff header
	XFrameOptions             string // X-Frame-Options header value
	XContentTypeOptions       bool   // X-Content-Type-Options header
	ReferrerPolicy            string // Referrer-Policy header value
	PermissionsPolicy         string // Permissions-Policy header value
	StrictTransportSecurity   string // Strict-Transport-Security header value
	ContentSecurityPolicy     string // Content-Security-Policy header value
	ExpectCT                  string // Expect-CT header value
	CrossOriginEmbedderPolicy string // Cross-Origin-Embedder-Policy header value
	CrossOriginOpenerPolicy   string // Cross-Origin-Opener-Policy header value
	CrossOriginResourcePolicy string // Cross-Origin-Resource-Policy header value
}

SecurityConfig holds configuration for security middleware

func DefaultSecurityConfig

func DefaultSecurityConfig() SecurityConfig

DefaultSecurityConfig returns default security configuration

type Session

type Session struct {
	ID        string                 `json:"id"`
	Data      map[string]interface{} `json:"data"`
	CreatedAt time.Time              `json:"created_at"`
	UpdatedAt time.Time              `json:"updated_at"`
	ExpiresAt time.Time              `json:"expires_at"`
}

Session represents a user session

func GetSession

func GetSession(ctx *fiber.Ctx) *Session

GetSession retrieves the session from context

func NewSession

func NewSession(expiration time.Duration) *Session

NewSession creates a new session

func (*Session) Clear

func (s *Session) Clear()

Clear removes all data from the session

func (*Session) Delete

func (s *Session) Delete(key string)

Delete removes a value from the session

func (*Session) Get

func (s *Session) Get(key string) (interface{}, bool)

Get retrieves a value from the session

func (*Session) IsExpired

func (s *Session) IsExpired() bool

IsExpired checks if the session is expired

func (*Session) Set

func (s *Session) Set(key string, value interface{})

Set sets a value in the session

type SessionConfig

type SessionConfig struct {
	Name            string        // Session cookie name
	Secret          string        // Secret key for session encryption
	CookiePath      string        // Path for the cookie
	CookieDomain    string        // Domain for the cookie
	CookieSecure    bool          // Secure flag for cookie
	CookieHTTPOnly  bool          // HTTPOnly flag for cookie
	CookieSameSite  string        // SameSite attribute for cookie
	Expiration      time.Duration // Session expiration time
	CleanupInterval time.Duration // Interval for cleaning up expired sessions
	Store           SessionStore  // Session store implementation
}

SessionConfig holds configuration for session middleware

func DefaultSessionConfig

func DefaultSessionConfig() SessionConfig

DefaultSessionConfig returns default session configuration

type SessionManager

type SessionManager struct {
	// contains filtered or unexported fields
}

SessionManager manages sessions

func NewSessionManager

func NewSessionManager(config SessionConfig) *SessionManager

NewSessionManager creates a new session manager

func (*SessionManager) Handler

func (sm *SessionManager) Handler() fiber.Handler

Handler returns the session middleware handler

type SessionStore

type SessionStore interface {
	Get(sessionID string) (*Session, error)
	Set(sessionID string, session *Session) error
	Delete(sessionID string) error
	Cleanup() error
}

SessionStore interface for session storage

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL