mirror of
https://github.com/minio/minio.git
synced 2025-04-20 02:27:50 -04:00
Add ExpiresAt to LicenseInfo (#10293)
This commit is contained in:
parent
0ebb73ee2e
commit
ccd967e3be
@ -21,6 +21,7 @@ import (
|
|||||||
"crypto/ecdsa"
|
"crypto/ecdsa"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/dgrijalva/jwt-go"
|
"github.com/dgrijalva/jwt-go"
|
||||||
)
|
)
|
||||||
@ -37,12 +38,14 @@ type LicenseInfo struct {
|
|||||||
AccountID int64 // Subnet account id
|
AccountID int64 // Subnet account id
|
||||||
StorageCapacity int64 // Storage capacity used in TB
|
StorageCapacity int64 // Storage capacity used in TB
|
||||||
ServiceType string // Subnet service type
|
ServiceType string // Subnet service type
|
||||||
|
ExpiresAt time.Time // Time of license expiry
|
||||||
}
|
}
|
||||||
|
|
||||||
// license key JSON field names
|
// license key JSON field names
|
||||||
const (
|
const (
|
||||||
accountID = "accountId"
|
accountID = "accountId"
|
||||||
sub = "sub"
|
sub = "sub"
|
||||||
|
expiresAt = "exp"
|
||||||
teamName = "teamName"
|
teamName = "teamName"
|
||||||
capacity = "capacity"
|
capacity = "capacity"
|
||||||
serviceType = "serviceType"
|
serviceType = "serviceType"
|
||||||
@ -71,6 +74,11 @@ func toLicenseInfo(claims jwt.MapClaims) (LicenseInfo, error) {
|
|||||||
if !ok {
|
if !ok {
|
||||||
return LicenseInfo{}, errors.New("Invalid email in claims")
|
return LicenseInfo{}, errors.New("Invalid email in claims")
|
||||||
}
|
}
|
||||||
|
expiryTS, ok := claims[expiresAt].(float64)
|
||||||
|
if !ok {
|
||||||
|
return LicenseInfo{}, errors.New("Invalid time of expiry in claims")
|
||||||
|
}
|
||||||
|
expiresAt := time.Unix(int64(expiryTS), 0)
|
||||||
tName, ok := claims[teamName].(string)
|
tName, ok := claims[teamName].(string)
|
||||||
if !ok {
|
if !ok {
|
||||||
return LicenseInfo{}, errors.New("Invalid team name in claims")
|
return LicenseInfo{}, errors.New("Invalid team name in claims")
|
||||||
@ -89,6 +97,7 @@ func toLicenseInfo(claims jwt.MapClaims) (LicenseInfo, error) {
|
|||||||
AccountID: int64(accID),
|
AccountID: int64(accID),
|
||||||
StorageCapacity: int64(storageCap),
|
StorageCapacity: int64(storageCap),
|
||||||
ServiceType: sType,
|
ServiceType: sType,
|
||||||
|
ExpiresAt: expiresAt,
|
||||||
}, nil
|
}, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -31,6 +31,13 @@ func at(t time.Time, f func()) {
|
|||||||
jwt.TimeFunc = time.Now
|
jwt.TimeFunc = time.Now
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func areEqLicenseInfo(a, b LicenseInfo) bool {
|
||||||
|
if a.Email == b.Email && a.TeamName == b.TeamName && a.AccountID == b.AccountID && a.ServiceType == b.ServiceType && a.StorageCapacity == b.StorageCapacity && a.ExpiresAt.Equal(b.ExpiresAt) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
// TestLicenseVerify tests the license key verification process with a valid and
|
// TestLicenseVerify tests the license key verification process with a valid and
|
||||||
// an invalid key.
|
// an invalid key.
|
||||||
func TestLicenseVerify(t *testing.T) {
|
func TestLicenseVerify(t *testing.T) {
|
||||||
@ -54,6 +61,7 @@ mr/cKCUyBL7rcAvg0zNq1vcSrUSGlAmY3SEDCu3GOKnjG/U4E7+p957ocWSV+mQU
|
|||||||
AccountID: 1,
|
AccountID: 1,
|
||||||
StorageCapacity: 50,
|
StorageCapacity: 50,
|
||||||
ServiceType: "STANDARD",
|
ServiceType: "STANDARD",
|
||||||
|
ExpiresAt: time.Date(2021, time.August, 5, 15, 17, 42, 0, time.FixedZone("PDT", -7*60*60)),
|
||||||
}, true},
|
}, true},
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -69,7 +77,7 @@ mr/cKCUyBL7rcAvg0zNq1vcSrUSGlAmY3SEDCu3GOKnjG/U4E7+p957ocWSV+mQU
|
|||||||
if !tc.shouldPass {
|
if !tc.shouldPass {
|
||||||
t.Fatalf("%d: Expected license to fail verification but passed", i+1)
|
t.Fatalf("%d: Expected license to fail verification but passed", i+1)
|
||||||
}
|
}
|
||||||
if tc.expectedLicInfo != licInfo {
|
if !areEqLicenseInfo(tc.expectedLicInfo, licInfo) {
|
||||||
t.Fatalf("%d: Expected license info %v but got %v", i+1, tc.expectedLicInfo, licInfo)
|
t.Fatalf("%d: Expected license info %v but got %v", i+1, tc.expectedLicInfo, licInfo)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user