multitenant

package
v0.24.0 Latest Latest
Warning

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

Go to latest
Published: Feb 7, 2026 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrTenantResolutionFailed = errors.New("tenant resolution failed")

ErrTenantResolutionFailed is returned when a resolver cannot determine the tenant identifier.

Functions

func GetTenant

func GetTenant(ctx context.Context) (string, bool)

GetTenant extracts the tenant identifier from the context.

func SetTenant

func SetTenant(ctx context.Context, tenantID string) context.Context

SetTenant stores the tenant identifier in the provided context.

Types

type CompositeResolver

type CompositeResolver struct {
	Resolvers   []TenantResolver
	TenantRegex *regexp.Regexp // Optional validation pattern
}

CompositeResolver tries multiple resolvers until one succeeds.

func (*CompositeResolver) ResolveTenant

func (r *CompositeResolver) ResolveTenant(ctx context.Context, req *http.Request) (string, error)

ResolveTenant implements TenantResolver.

type HeaderResolver

type HeaderResolver struct {
	HeaderName string
}

HeaderResolver extracts the tenant identifier from a configured request header.

func (*HeaderResolver) ResolveTenant

func (r *HeaderResolver) ResolveTenant(ctx context.Context, req *http.Request) (string, error)

ResolveTenant implements TenantResolver.

type SubdomainResolver

type SubdomainResolver struct {
	RootDomain   string
	TrustProxies bool
}

SubdomainResolver extracts the tenant identifier from the request host.

func (*SubdomainResolver) ResolveTenant

func (r *SubdomainResolver) ResolveTenant(ctx context.Context, req *http.Request) (string, error)

ResolveTenant implements TenantResolver.

type TenantResolver

type TenantResolver interface {
	ResolveTenant(ctx context.Context, req *http.Request) (string, error)
}

TenantResolver resolves the tenant identifier from an incoming request.

type ValidatingResolver

type ValidatingResolver struct {
	Resolver    TenantResolver
	TenantRegex *regexp.Regexp
}

ValidatingResolver wraps any resolver with tenant ID validation.

func (*ValidatingResolver) ResolveTenant

func (r *ValidatingResolver) ResolveTenant(ctx context.Context, req *http.Request) (string, error)

ResolveTenant implements TenantResolver with validation.

Jump to

Keyboard shortcuts

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