chore: refactor license validation (#20411)

This commit is contained in:
Marcin Tojek
2025-10-22 16:12:36 +02:00
committed by GitHub
parent 823b14aa34
commit caeca1097b
3 changed files with 65 additions and 3 deletions
+11 -1
View File
@@ -612,6 +612,8 @@ var (
ErrMissingLicenseExpires = xerrors.New("license has invalid or missing license_expires claim")
ErrMissingExp = xerrors.New("license has invalid or missing exp (expires at) claim")
ErrMultipleIssues = xerrors.New("license has multiple issues; contact support")
ErrMissingAccountType = xerrors.New("license must contain valid account type")
ErrMissingAccountID = xerrors.New("license must contain valid account ID")
)
type Features map[codersdk.FeatureName]int64
@@ -696,12 +698,20 @@ func validateClaims(tok *jwt.Token) (*Claims, error) {
if claims.NotBefore == nil {
return nil, ErrMissingNotBefore
}
if claims.LicenseExpires == nil {
yearsHardLimit := time.Now().Add(5 /* years */ * 365 * 24 * time.Hour)
if claims.LicenseExpires == nil || claims.LicenseExpires.Time.After(yearsHardLimit) {
return nil, ErrMissingLicenseExpires
}
if claims.ExpiresAt == nil {
return nil, ErrMissingExp
}
if claims.AccountType == "" {
return nil, ErrMissingAccountType
}
if claims.AccountID == "" {
return nil, ErrMissingAccountID
}
return claims, nil
}
return nil, xerrors.New("unable to parse Claims")