resolver

package
v0.1.2 Latest Latest
Warning

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

Go to latest
Published: Jul 9, 2026 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Overview

Package resolver extracts tenant identifiers from HTTP headers, cookies, query parameters, domains, and token claims.

Index

Constants

View Source
const (
	// DefaultCookieName is the default cookie used for tenant resolution.
	DefaultCookieName = "tenant_id"
)
View Source
const (
	// DefaultHeaderName is the default request header used for tenant resolution.
	DefaultHeaderName = "x-tenant-id"
)
View Source
const (
	// DefaultQueryParam is the default query parameter used for tenant resolution.
	DefaultQueryParam = "tenant_id"
)

Variables

View Source
var (
	// ErrNoTenant reports that no resolver contributor found a tenant identifier.
	ErrNoTenant = gotenancy.ErrNoTenant

	// ErrNilRequest reports a nil HTTP request.
	ErrNilRequest = errors.New("gotenancy/resolver: nil request")

	// ErrInvalidHost reports a host value that cannot be used for domain resolution.
	ErrInvalidHost = errors.New("gotenancy/resolver: invalid host")

	// ErrNilClaimExtractor reports a nil token claim extractor.
	ErrNilClaimExtractor = errors.New("gotenancy/resolver: nil claim extractor")
)

Functions

This section is empty.

Types

type ClaimExtractor

type ClaimExtractor func(r *http.Request) (raw string, ok bool, err error)

ClaimExtractor extracts a tenant claim from a request after authentication.

type Composite

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

Composite resolves tenants by trying contributors in order.

func NewComposite

func NewComposite(contribs ...Contrib) *Composite

NewComposite creates a priority-ordered resolver.

func (*Composite) Resolve

func (resolver *Composite) Resolve(r *http.Request) (types.TenantID, error)

Resolve returns the first tenant identifier produced by a contributor.

type Contrib

type Contrib interface {
	Resolve(r *http.Request) (types.TenantID, bool, error)
}

Contrib attempts to resolve a tenant identifier from one request source.

type CookieContrib

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

CookieContrib resolves tenant IDs from an HTTP cookie.

func NewCookieContrib

func NewCookieContrib(name string, strategy types.TenantIDStrategy) CookieContrib

NewCookieContrib creates a cookie-based resolver contributor.

func (CookieContrib) Resolve

func (contrib CookieContrib) Resolve(r *http.Request) (types.TenantID, bool, error)

Resolve reads tenant ID from the configured cookie.

type DomainContrib

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

DomainContrib resolves tenant IDs from single-label subdomains.

func NewDomainContrib

func NewDomainContrib(baseDomain string, strategy types.TenantIDStrategy) DomainContrib

NewDomainContrib creates a subdomain-based resolver contributor.

func (DomainContrib) Resolve

func (contrib DomainContrib) Resolve(r *http.Request) (types.TenantID, bool, error)

Resolve reads tenant ID from a host like tenant.example.com.

type HeaderContrib

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

HeaderContrib resolves tenant IDs from an HTTP header.

func NewHeaderContrib

func NewHeaderContrib(name string, strategy types.TenantIDStrategy) HeaderContrib

NewHeaderContrib creates a header-based resolver contributor.

func (HeaderContrib) Resolve

func (contrib HeaderContrib) Resolve(r *http.Request) (types.TenantID, bool, error)

Resolve reads tenant ID from the configured header.

type QueryContrib

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

QueryContrib resolves tenant IDs from a URL query parameter.

func NewQueryContrib

func NewQueryContrib(name string, strategy types.TenantIDStrategy) QueryContrib

NewQueryContrib creates a query-based resolver contributor.

func (QueryContrib) Resolve

func (contrib QueryContrib) Resolve(r *http.Request) (types.TenantID, bool, error)

Resolve reads tenant ID from the configured query parameter.

type Resolver

type Resolver interface {
	Resolve(r *http.Request) (types.TenantID, error)
}

Resolver resolves a tenant identifier from an HTTP request.

type TokenClaimContrib

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

TokenClaimContrib resolves tenant IDs from a caller-provided token claim extractor.

func NewTokenClaimContrib

func NewTokenClaimContrib(extractor ClaimExtractor, strategy types.TenantIDStrategy) TokenClaimContrib

NewTokenClaimContrib creates a token-claim resolver contributor.

func (TokenClaimContrib) Resolve

func (contrib TokenClaimContrib) Resolve(r *http.Request) (types.TenantID, bool, error)

Resolve reads tenant ID through the configured claim extractor.

Jump to

Keyboard shortcuts

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