middleware

package
v0.9.1 Latest Latest
Warning

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

Go to latest
Published: Feb 22, 2026 License: MIT Imports: 20 Imported by: 0

Documentation

Index

Constants

View Source
const (
	SessionUserID       = "user_id"
	SessionLastActivity = "last_activity"
	SessionFingerprint  = "session_fingerprint"
)

Variables

This section is empty.

Functions

func CSRFMiddleware added in v0.2.0

func CSRFMiddleware() gin.HandlerFunc

CSRFMiddleware provides CSRF protection for state-changing operations

func GetCSRFToken added in v0.2.0

func GetCSRFToken(c *gin.Context) string

GetCSRFToken retrieves the CSRF token from the context

func MetricsAuthMiddleware added in v0.8.0

func MetricsAuthMiddleware(token string) gin.HandlerFunc

MetricsAuthMiddleware creates a middleware that protects metrics endpoint with Bearer token

func NewRateLimiter added in v0.7.0

func NewRateLimiter(config RateLimitConfig) (gin.HandlerFunc, error)

NewRateLimiter creates a new rate limiter with configurable store backend

func RequireAdmin added in v0.2.0

func RequireAdmin(userService *services.UserService) gin.HandlerFunc

RequireAdmin is a middleware that requires the user to have admin role This middleware should be used after RequireAuth

func RequireAuth

func RequireAuth(userService *services.UserService) gin.HandlerFunc

RequireAuth is a middleware that requires the user to be logged in

func SessionFingerprintMiddleware added in v0.8.0

func SessionFingerprintMiddleware(enabled bool, includeIP bool) gin.HandlerFunc

SessionFingerprintMiddleware validates session fingerprint to prevent session hijacking Checks User-Agent (and optionally IP) against stored fingerprint

func SessionIdleTimeout added in v0.8.0

func SessionIdleTimeout(idleTimeoutSeconds int) gin.HandlerFunc

SessionIdleTimeout checks if the session has been idle for too long and clears it if necessary. Set idleTimeoutSeconds to 0 to disable.

Types

type RateLimitConfig added in v0.7.0

type RateLimitConfig struct {
	// Rate limit settings
	RequestsPerMinute int           // Number of requests allowed per minute
	CleanupInterval   time.Duration // How often to cleanup (only for memory store)

	// Store settings
	StoreType RateLimitStoreType // "memory" or "redis"

	// Redis settings (only used when StoreType = "redis")
	// Must be provided when StoreType is "redis" (initialized in main.go)
	RedisClient *redis.Client // Required for Redis store: shared go-redis client

	// Audit settings
	AuditService *services.AuditService // Optional: audit service for logging rate limit events
}

RateLimitConfig holds the configuration for rate limiting with store support

type RateLimitStoreType added in v0.7.0

type RateLimitStoreType string

RateLimitStoreType defines the type of rate limit store

const (
	// RateLimitStoreMemory uses in-memory storage (single instance only)
	RateLimitStoreMemory RateLimitStoreType = "memory"
	// RateLimitStoreRedis uses Redis storage (distributed, multi-pod support)
	RateLimitStoreRedis RateLimitStoreType = "redis"
)

Jump to

Keyboard shortcuts

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