mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-05-06 16:16:26 +00:00
78 lines
3.2 KiB
Go
78 lines
3.2 KiB
Go
// Package license handles Pulse Pro license validation and feature gating.
|
|
package license
|
|
|
|
import "github.com/rcourtman/pulse-go-rewrite/pkg/licensing"
|
|
|
|
// Feature constants represent gated features in Pulse.
|
|
// These are embedded in license JWTs and checked at runtime.
|
|
const (
|
|
FeatureAIPatrol = licensing.FeatureAIPatrol
|
|
FeatureAIAlerts = licensing.FeatureAIAlerts
|
|
FeatureAIAutoFix = licensing.FeatureAIAutoFix
|
|
FeatureKubernetesAI = licensing.FeatureKubernetesAI
|
|
FeatureAgentProfiles = licensing.FeatureAgentProfiles
|
|
FeatureUpdateAlerts = licensing.FeatureUpdateAlerts
|
|
FeatureRBAC = licensing.FeatureRBAC
|
|
FeatureAuditLogging = licensing.FeatureAuditLogging
|
|
FeatureSSO = licensing.FeatureSSO
|
|
FeatureAdvancedSSO = licensing.FeatureAdvancedSSO
|
|
FeatureAdvancedReporting = licensing.FeatureAdvancedReporting
|
|
FeatureLongTermMetrics = licensing.FeatureLongTermMetrics
|
|
FeatureRelay = licensing.FeatureRelay
|
|
FeatureMobileApp = licensing.FeatureMobileApp
|
|
FeaturePushNotifications = licensing.FeaturePushNotifications
|
|
FeatureMultiUser = licensing.FeatureMultiUser
|
|
FeatureWhiteLabel = licensing.FeatureWhiteLabel
|
|
FeatureMultiTenant = licensing.FeatureMultiTenant
|
|
FeatureUnlimited = licensing.FeatureUnlimited
|
|
FeatureDemoFixtures = licensing.FeatureDemoFixtures
|
|
)
|
|
|
|
// Tier represents a license tier.
|
|
type Tier = licensing.Tier
|
|
|
|
const (
|
|
TierFree = licensing.TierFree
|
|
TierRelay = licensing.TierRelay
|
|
TierPro = licensing.TierPro
|
|
TierProPlus = licensing.TierProPlus
|
|
TierProAnnual = licensing.TierProAnnual
|
|
TierLifetime = licensing.TierLifetime
|
|
TierCloud = licensing.TierCloud
|
|
TierMSP = licensing.TierMSP
|
|
TierEnterprise = licensing.TierEnterprise
|
|
)
|
|
|
|
// TierFeatures maps each tier to its included features.
|
|
var TierFeatures = licensing.TierFeatures
|
|
|
|
// TierMonitoredSystemLimits defines the maximum agent count per tier.
|
|
var TierMonitoredSystemLimits = licensing.TierMonitoredSystemLimits
|
|
|
|
// TierHistoryDays defines the maximum metrics history retention per tier.
|
|
var TierHistoryDays = licensing.TierHistoryDays
|
|
|
|
// DeriveCapabilitiesFromTier derives effective capabilities from tier and explicit features.
|
|
func DeriveCapabilitiesFromTier(tier Tier, explicitFeatures []string) []string {
|
|
return licensing.DeriveCapabilitiesFromTier(tier, explicitFeatures)
|
|
}
|
|
|
|
// DeriveEntitlements derives capabilities and limits from tier and canonical monitored-system fields.
|
|
func DeriveEntitlements(tier Tier, features []string, maxMonitoredSystems int, maxGuests int) (capabilities []string, limits map[string]int64) {
|
|
return licensing.DeriveEntitlements(tier, features, maxMonitoredSystems, maxGuests)
|
|
}
|
|
|
|
// TierHasFeature checks if a tier includes a specific feature.
|
|
func TierHasFeature(tier Tier, feature string) bool {
|
|
return licensing.TierHasFeature(tier, feature)
|
|
}
|
|
|
|
// GetTierDisplayName returns a human-readable name for the tier.
|
|
func GetTierDisplayName(tier Tier) string {
|
|
return licensing.GetTierDisplayName(tier)
|
|
}
|
|
|
|
// GetFeatureDisplayName returns a human-readable name for a feature.
|
|
func GetFeatureDisplayName(feature string) string {
|
|
return licensing.GetFeatureDisplayName(feature)
|
|
}
|