middleware

package
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Nov 20, 2025 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AuthMiddleware

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

AuthMiddleware handles authentication via API keys and sessions Following production patterns like Clerk, this middleware supports: - API key authentication (pk/sk/rk keys) - Session-based authentication (cookies + bearer tokens) - Dual authentication (both API key and user session)

func NewAuthMiddleware

func NewAuthMiddleware(
	apiKeySvc *apikey.Service,
	sessionSvc session.ServiceInterface,
	userSvc user.ServiceInterface,
	config AuthMiddlewareConfig,
) *AuthMiddleware

NewAuthMiddleware creates a new authentication middleware

func (*AuthMiddleware) Authenticate

func (m *AuthMiddleware) Authenticate(next func(forge.Context) error) func(forge.Context) error

Authenticate is the main middleware function that populates auth context This middleware is optional by default - it populates context but doesn't block

func (*AuthMiddleware) RequireAPIKey

func (m *AuthMiddleware) RequireAPIKey(next func(forge.Context) error) func(forge.Context) error

RequireAPIKey middleware that requires an API key

func (*AuthMiddleware) RequireAdmin

func (m *AuthMiddleware) RequireAdmin(next func(forge.Context) error) func(forge.Context) error

RequireAdmin middleware that requires admin privileges

func (*AuthMiddleware) RequireAllPermissions

func (m *AuthMiddleware) RequireAllPermissions(permissions ...string) func(func(forge.Context) error) func(forge.Context) error

RequireAllPermissions middleware that requires all of the specified permissions

func (*AuthMiddleware) RequireAllScopes

func (m *AuthMiddleware) RequireAllScopes(scopes ...string) func(func(forge.Context) error) func(forge.Context) error

RequireAllScopes middleware that requires all of the specified scopes

func (*AuthMiddleware) RequireAnyPermission

func (m *AuthMiddleware) RequireAnyPermission(permissions ...string) func(func(forge.Context) error) func(forge.Context) error

RequireAnyPermission middleware that requires any of the specified permissions

func (*AuthMiddleware) RequireAnyScope

func (m *AuthMiddleware) RequireAnyScope(scopes ...string) func(func(forge.Context) error) func(forge.Context) error

RequireAnyScope middleware that requires any of the specified scopes

func (*AuthMiddleware) RequireAuth

func (m *AuthMiddleware) RequireAuth(next func(forge.Context) error) func(forge.Context) error

RequireAuth middleware that rejects unauthenticated requests

func (*AuthMiddleware) RequireCanAccess

func (m *AuthMiddleware) RequireCanAccess(action, resource string) func(func(forge.Context) error) func(forge.Context) error

RequireCanAccess middleware that checks if auth context can access a resource This is flexible - accepts EITHER legacy scopes OR RBAC permissions Recommended for backward compatibility

func (*AuthMiddleware) RequirePublishableKey

func (m *AuthMiddleware) RequirePublishableKey(next func(forge.Context) error) func(forge.Context) error

RequirePublishableKey middleware that requires a publishable (pk_) API key

func (*AuthMiddleware) RequireRBACPermission

func (m *AuthMiddleware) RequireRBACPermission(action, resource string) func(func(forge.Context) error) func(forge.Context) error

RequireRBACPermission middleware that requires a specific RBAC permission Checks only RBAC permissions (not legacy scopes)

func (*AuthMiddleware) RequireScope

func (m *AuthMiddleware) RequireScope(scope string) func(func(forge.Context) error) func(forge.Context) error

RequireScope middleware that requires a specific API key scope

func (*AuthMiddleware) RequireSecretKey

func (m *AuthMiddleware) RequireSecretKey(next func(forge.Context) error) func(forge.Context) error

RequireSecretKey middleware that requires a secret (sk_) API key

func (*AuthMiddleware) RequireUser

func (m *AuthMiddleware) RequireUser(next func(forge.Context) error) func(forge.Context) error

RequireUser middleware that requires a logged-in user (session)

type AuthMiddlewareConfig

type AuthMiddlewareConfig struct {
	// Cookie name for session token
	SessionCookieName string

	// Allow unauthenticated requests to pass through
	// If false, middleware will return 401 for unauthenticated requests
	Optional bool

	// Header names to check for API keys
	APIKeyHeaders []string

	// Allow API key in query params (NOT recommended for production)
	AllowAPIKeyInQuery bool

	// Allow query param session tokens (NOT recommended for production)
	AllowSessionInQuery bool
}

AuthMiddlewareConfig configures the authentication middleware behavior

Jump to

Keyboard shortcuts

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