middleware

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Jun 12, 2025 License: MIT Imports: 21 Imported by: 0

Documentation

Overview

Package middleware provides HTTP middleware components.

Index

Constants

View Source
const (
	// NonceSize is the size of the nonce in bytes (32 bytes = 256 bits)
	NonceSize = 32
	// HSTSOneYear is the number of seconds in one year
	HSTSOneYear = 31536000
	// DefaultTokenLength is the default length for generated tokens
	DefaultTokenLength = 32
	// RateLimitBurst is the number of requests allowed in a burst
	RateLimitBurst = 5
	// DefaultRateLimit is the default number of requests allowed per second
	DefaultRateLimit = 20
	// CookieMaxAge is the maximum age of cookies in seconds (24 hours)
	CookieMaxAge = 86400
	// FieldPairSize represents the number of elements in a key-value pair
	FieldPairSize = 2
)

Variables

View Source
var Module = fx.Options(
	fx.Provide(

		func(logger logging.Logger) *access.AccessManager {
			manager := access.NewAccessManager(access.DefaultRules())
			logger.Debug("access manager initialized", "service", "access")
			return manager
		},

		func(
			logger logging.Logger,
			cfg *config.Config,
			lc fx.Lifecycle,
			accessManager *access.AccessManager,
		) *session.Manager {
			sessionConfig := &session.SessionConfig{
				Config:        cfg,
				SessionConfig: &cfg.Session,
				PublicPaths: []string{
					"/login",
					"/signup",
					"/forgot-password",
					"/reset-password",
					"/health",
					"/metrics",
					"/demo",
				},
				ExemptPaths: []string{
					"/api/v1/validation",
					"/api/v1/validation/login",
					"/api/v1/validation/signup",
					"/api/v1/public",
					"/api/v1/health",
					"/api/v1/metrics",
				},
				StaticPaths: []string{
					"/static",
					"/assets",
					"/images",
					"/css",
					"/js",
					"/favicon.ico",
				},
			}
			return session.NewManager(logger, sessionConfig, lc, accessManager)
		},
	),
)

Module provides middleware dependencies

Functions

func ErrorHandlerMiddleware added in v0.1.5

func ErrorHandlerMiddleware() echo.MiddlewareFunc

ErrorHandlerMiddleware is a middleware that handles errors

func Recovery added in v0.1.5

func Recovery(logger logging.Logger) echo.MiddlewareFunc

Recovery returns a middleware that recovers from panics

Types

type EchoLogger added in v0.1.5

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

EchoLogger implements echo.Logger interface using our custom logger

func (*EchoLogger) Debug added in v0.1.5

func (l *EchoLogger) Debug(i ...any)

func (*EchoLogger) Debugf added in v0.1.5

func (l *EchoLogger) Debugf(format string, args ...any)

func (*EchoLogger) Debugj added in v0.1.5

func (l *EchoLogger) Debugj(j log.JSON)

func (*EchoLogger) Error added in v0.1.5

func (l *EchoLogger) Error(i ...any)

func (*EchoLogger) Errorf added in v0.1.5

func (l *EchoLogger) Errorf(format string, args ...any)

func (*EchoLogger) Errorj added in v0.1.5

func (l *EchoLogger) Errorj(j log.JSON)

func (*EchoLogger) Fatal added in v0.1.5

func (l *EchoLogger) Fatal(i ...any)

func (*EchoLogger) Fatalf added in v0.1.5

func (l *EchoLogger) Fatalf(format string, args ...any)

func (*EchoLogger) Fatalj added in v0.1.5

func (l *EchoLogger) Fatalj(j log.JSON)

func (*EchoLogger) Info added in v0.1.5

func (l *EchoLogger) Info(i ...any)

func (*EchoLogger) Infof added in v0.1.5

func (l *EchoLogger) Infof(format string, args ...any)

func (*EchoLogger) Infoj added in v0.1.5

func (l *EchoLogger) Infoj(j log.JSON)

func (*EchoLogger) Level added in v0.1.5

func (l *EchoLogger) Level() log.Lvl

func (*EchoLogger) Output added in v0.1.5

func (l *EchoLogger) Output() io.Writer

func (*EchoLogger) Panic added in v0.1.5

func (l *EchoLogger) Panic(i ...any)

func (*EchoLogger) Panicf added in v0.1.5

func (l *EchoLogger) Panicf(format string, args ...any)

func (*EchoLogger) Panicj added in v0.1.5

func (l *EchoLogger) Panicj(j log.JSON)

func (*EchoLogger) Prefix added in v0.1.5

func (l *EchoLogger) Prefix() string

func (*EchoLogger) Print added in v0.1.5

func (l *EchoLogger) Print(i ...any)

func (*EchoLogger) Printf added in v0.1.5

func (l *EchoLogger) Printf(format string, args ...any)

func (*EchoLogger) Printj added in v0.1.5

func (l *EchoLogger) Printj(j log.JSON)

func (*EchoLogger) SetHeader added in v0.1.5

func (l *EchoLogger) SetHeader(h string)

func (*EchoLogger) SetLevel added in v0.1.5

func (l *EchoLogger) SetLevel(level log.Lvl)

func (*EchoLogger) SetOutput added in v0.1.5

func (l *EchoLogger) SetOutput(w io.Writer)

func (*EchoLogger) SetPrefix added in v0.1.5

func (l *EchoLogger) SetPrefix(p string)

func (*EchoLogger) Warn added in v0.1.5

func (l *EchoLogger) Warn(i ...any)

func (*EchoLogger) Warnf added in v0.1.5

func (l *EchoLogger) Warnf(format string, args ...any)

func (*EchoLogger) Warnj added in v0.1.5

func (l *EchoLogger) Warnj(j log.JSON)

type EchoValidator

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

EchoValidator wraps the infrastructure validator to implement Echo's Validator interface.

func NewValidator

func NewValidator() (*EchoValidator, error)

NewValidator creates a new Echo validator

func (*EchoValidator) Validate

func (v *EchoValidator) Validate(i any) error

Validate implements echo.Validator interface.

type ErrorHandler added in v0.2.0

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

ErrorHandler handles errors and returns appropriate HTTP responses

func NewErrorHandler added in v0.2.0

func NewErrorHandler(logger logging.Logger) *ErrorHandler

NewErrorHandler creates a new error handler

func (*ErrorHandler) Handle added in v0.2.0

func (h *ErrorHandler) Handle(err error, c echo.Context)

Handle handles errors and returns appropriate HTTP responses

func (*ErrorHandler) Middleware added in v0.2.0

func (h *ErrorHandler) Middleware() echo.MiddlewareFunc

Middleware returns the error handler middleware function

type Manager

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

Manager handles middleware configuration and setup

func NewManager added in v0.1.5

func NewManager(cfg *ManagerConfig) *Manager

NewManager creates a new middleware manager

func (*Manager) GetSessionManager added in v0.1.5

func (m *Manager) GetSessionManager() *session.Manager

GetSessionManager returns the session manager

func (*Manager) Setup

func (m *Manager) Setup(e *echo.Echo)

Setup registers all middleware with the Echo instance

type ManagerConfig

type ManagerConfig struct {
	Logger         logging.Logger
	Security       *appconfig.SecurityConfig
	UserService    user.Service
	Config         *appconfig.Config
	SessionManager *session.Manager
	AccessManager  *access.AccessManager
}

ManagerConfig represents the configuration for the middleware manager

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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