Pulse/pkg/licensing/token_source.go
rcourtman 81b31e4d3b Remove monitored-system volume caps
Retire runtime/API/UI monitored-system volume enforcement now that infrastructure monitoring is no longer capped.

Keep only legacy metadata scrubbing and purchase-start compatibility for old max_monitored_systems references.

Rename the remaining preview surface to monitored-system impact and make previews explanatory rather than save-blocking.

Update subsystem contracts and RA7 evidence for the caps-retired invariant.
2026-05-05 12:59:59 +01:00

78 lines
2.2 KiB
Go

package licensing
// TokenSource implements EntitlementSource from JWT claims.
// Uses claims effective capability/limit derivation for backward compatibility.
type TokenSource struct {
claims TokenClaims
}
// TokenClaims is the minimal claim view TokenSource needs.
type TokenClaims interface {
EffectiveCapabilities() []string
EffectiveLimits() map[string]int64
EntitlementMetersEnabled() []string
EntitlementPlanVersion() string
EntitlementSubscriptionState() SubscriptionState
}
// NewTokenSource creates a TokenSource from token claims.
func NewTokenSource(claims TokenClaims) *TokenSource {
return &TokenSource{claims: claims}
}
// Capabilities returns effective capabilities (explicit or tier-derived).
func (t *TokenSource) Capabilities() []string {
if t == nil || t.claims == nil {
return nil
}
return t.claims.EffectiveCapabilities()
}
// Limits returns effective limits from explicit claims and derived guest policy.
func (t *TokenSource) Limits() map[string]int64 {
if t == nil || t.claims == nil {
return nil
}
return t.claims.EffectiveLimits()
}
// MetersEnabled returns the meters_enabled list from claims.
func (t *TokenSource) MetersEnabled() []string {
if t == nil || t.claims == nil {
return nil
}
return t.claims.EntitlementMetersEnabled()
}
// PlanVersion returns the plan_version from claims.
func (t *TokenSource) PlanVersion() string {
if t == nil || t.claims == nil {
return ""
}
return t.claims.EntitlementPlanVersion()
}
// SubscriptionState returns the subscription_state from claims.
// Returns SubStateActive as default if not explicitly set.
func (t *TokenSource) SubscriptionState() SubscriptionState {
if t == nil || t.claims == nil {
return SubStateActive
}
return t.claims.EntitlementSubscriptionState()
}
// TrialStartedAt returns nil for token-backed entitlements.
func (t *TokenSource) TrialStartedAt() *int64 {
return nil
}
// TrialEndsAt returns nil for token-backed entitlements.
func (t *TokenSource) TrialEndsAt() *int64 {
return nil
}
// OverflowGrantedAt returns nil for token-backed entitlements.
// Onboarding overflow is managed via billing state, not JWT claims.
func (t *TokenSource) OverflowGrantedAt() *int64 {
return nil
}