Documentation
¶
Index ¶
- func CreateTestConfig() *config.Config
- func CreateTestConfigWithEmail() *config.Config
- func CreateTestConfigWithOAuth2() *config.Config
- type DefaultFactory
- func (f *DefaultFactory) CreateAuthzChecker(authzCfg config.AuthorizationConfig) authz.Checker
- func (f *DefaultFactory) CreateEmailHandler(emailAuthCfg config.EmailAuthConfig, serviceCfg config.ServiceConfig, ...) (*email.Handler, error)
- func (f *DefaultFactory) CreateForwarder(forwardingCfg config.ForwardingConfig, providers []config.OAuth2Provider) forwarding.Forwarder
- func (f *DefaultFactory) CreateKVSStores(cfg *config.Config) (session kvs.Store, token kvs.Store, rateLimit kvs.Store, err error)
- func (f *DefaultFactory) CreateMiddleware(cfg *config.Config, sessionStore session.Store, tokenKVS kvs.Store, ...) (*middleware.Middleware, error)
- func (f *DefaultFactory) CreateOAuth2Manager(oauth2Cfg config.OAuth2Config, serverCfg config.ServerConfig, host string, ...) *oauth2.Manager
- func (f *DefaultFactory) CreateRulesEvaluator(rulesCfg *rules.Config) (*rules.Evaluator, error)
- func (f *DefaultFactory) CreateSessionStore(kvsStore kvs.Store) session.Store
- func (f *DefaultFactory) CreateTranslator() *i18n.Translator
- type Factory
- type TestingFactory
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CreateTestConfig ¶
CreateTestConfig creates a minimal valid configuration for testing
func CreateTestConfigWithEmail ¶
CreateTestConfigWithEmail creates a test config with email authentication enabled
func CreateTestConfigWithOAuth2 ¶
CreateTestConfigWithOAuth2 creates a test config with a Google OAuth2 provider
Types ¶
type DefaultFactory ¶
type DefaultFactory struct {
// contains filtered or unexported fields
}
DefaultFactory is the default implementation of Factory. It can be embedded in custom factories to override specific methods.
func NewDefaultFactory ¶
func NewDefaultFactory(host string, port int, logger logging.Logger) *DefaultFactory
NewDefaultFactory creates a new DefaultFactory
func (*DefaultFactory) CreateAuthzChecker ¶
func (f *DefaultFactory) CreateAuthzChecker(authzCfg config.AuthorizationConfig) authz.Checker
CreateAuthzChecker creates an authorization checker based on config
func (*DefaultFactory) CreateEmailHandler ¶
func (f *DefaultFactory) CreateEmailHandler( emailAuthCfg config.EmailAuthConfig, serviceCfg config.ServiceConfig, serverCfg config.ServerConfig, sessionCfg config.SessionConfig, host string, port int, authzChecker authz.Checker, translator *i18n.Translator, tokenKVS kvs.Store, rateLimitKVS kvs.Store, ) (*email.Handler, error)
CreateEmailHandler creates an email authentication handler if enabled
func (*DefaultFactory) CreateForwarder ¶
func (f *DefaultFactory) CreateForwarder(forwardingCfg config.ForwardingConfig, providers []config.OAuth2Provider) forwarding.Forwarder
CreateForwarder creates a forwarder for user info forwarding (may return nil)
func (*DefaultFactory) CreateKVSStores ¶
func (f *DefaultFactory) CreateKVSStores(cfg *config.Config) (session kvs.Store, token kvs.Store, rateLimit kvs.Store, err error)
CreateKVSStores creates all required KVS stores from configuration. This consolidates the KVS creation logic that was previously in serve.go.
func (*DefaultFactory) CreateMiddleware ¶
func (f *DefaultFactory) CreateMiddleware( cfg *config.Config, sessionStore session.Store, tokenKVS kvs.Store, rateLimitKVS kvs.Store, proxyHandler http.Handler, logger logging.Logger, ) (*middleware.Middleware, error)
CreateMiddleware creates a complete Middleware instance with all components tokenKVS and rateLimitKVS should be created via CreateKVSStores() and passed in.
func (*DefaultFactory) CreateOAuth2Manager ¶
func (f *DefaultFactory) CreateOAuth2Manager(oauth2Cfg config.OAuth2Config, serverCfg config.ServerConfig, host string, port int) *oauth2.Manager
CreateOAuth2Manager creates an OAuth2 manager with configured providers
func (*DefaultFactory) CreateRulesEvaluator ¶
CreateRulesEvaluator creates a rules evaluator from configuration
func (*DefaultFactory) CreateSessionStore ¶
func (f *DefaultFactory) CreateSessionStore(kvsStore kvs.Store) session.Store
CreateSessionStore creates a session store using the provided KVS Since session.Store is now an alias for kvs.Store, this just returns the input
func (*DefaultFactory) CreateTranslator ¶
func (f *DefaultFactory) CreateTranslator() *i18n.Translator
CreateTranslator creates an i18n translator
type Factory ¶
type Factory interface {
// CreateMiddleware is the main factory method that creates a complete Middleware instance.
// It uses other factory methods internally to build all required components.
// tokenKVS and rateLimitKVS should be created via CreateKVSStores().
CreateMiddleware(
cfg *config.Config,
sessionStore session.Store,
tokenKVS kvs.Store,
rateLimitKVS kvs.Store,
proxyHandler http.Handler,
logger logging.Logger,
) (*middleware.Middleware, error)
// CreateOAuth2Manager creates an OAuth2 manager with configured providers
CreateOAuth2Manager(oauth2Cfg config.OAuth2Config, serverCfg config.ServerConfig, host string, port int) *oauth2.Manager
// CreateEmailHandler creates an email authentication handler if enabled
CreateEmailHandler(
emailAuthCfg config.EmailAuthConfig,
serviceCfg config.ServiceConfig,
serverCfg config.ServerConfig,
sessionCfg config.SessionConfig,
host string,
port int,
authzChecker authz.Checker,
translator *i18n.Translator,
tokenKVS kvs.Store,
rateLimitKVS kvs.Store,
) (*email.Handler, error)
// CreateAuthzChecker creates an authorization checker based on config
CreateAuthzChecker(authzCfg config.AuthorizationConfig) authz.Checker
// CreateForwarder creates a forwarder for user info forwarding (may return nil)
CreateForwarder(forwardingCfg config.ForwardingConfig, providers []config.OAuth2Provider) forwarding.Forwarder
// CreateRulesEvaluator creates a rules evaluator from configuration
CreateRulesEvaluator(rulesCfg *rules.Config) (*rules.Evaluator, error)
// CreateTranslator creates an i18n translator
CreateTranslator() *i18n.Translator
// CreateKVSStores creates all required KVS stores from configuration.
// This is the primary method for creating KVS stores. It should be called once
// at startup, and the returned stores should be passed to CreateMiddleware().
// Returns stores in order: sessionKVS, tokenKVS, rateLimitKVS, error
CreateKVSStores(cfg *config.Config) (session kvs.Store, token kvs.Store, rateLimit kvs.Store, err error)
// CreateSessionStore creates a session store using the provided KVS
CreateSessionStore(kvsStore kvs.Store) session.Store
}
Factory is the interface for creating middleware and its components. It serves as a simple DI container, allowing customization of specific components.
type TestingFactory ¶
type TestingFactory struct {
*DefaultFactory
}
TestingFactory is a factory implementation for testing purposes. It embeds DefaultFactory and overrides specific methods to use in-memory stores and mock components suitable for testing.
func NewTestingFactory ¶
func NewTestingFactory(host string, port int) *TestingFactory
NewTestingFactory creates a new TestingFactory with test-friendly defaults. It always uses in-memory KVS stores and a simple logger.
func NewTestingFactoryWithLogger ¶
func NewTestingFactoryWithLogger(host string, port int, logger logging.Logger) *TestingFactory
NewTestingFactoryWithLogger creates a TestingFactory with a custom logger.
func (*TestingFactory) CreateKVSStores ¶
func (f *TestingFactory) CreateKVSStores(cfg *config.Config) (session kvs.Store, token kvs.Store, rateLimit kvs.Store, err error)
CreateKVSStores creates all in-memory KVS stores for testing. Unlike the production implementation, this always uses memory stores regardless of configuration, making tests faster and isolated.