Refactor our license code to be entitlement centric.
This commit is contained in:
parent
d90398e9ff
commit
9f1c12e413
4 changed files with 238 additions and 130 deletions
|
@ -11,7 +11,7 @@ from flask import request, make_response, jsonify
|
|||
|
||||
import features
|
||||
|
||||
from app import app, avatar, superusers, authentication, config_provider
|
||||
from app import app, avatar, superusers, authentication, config_provider, license_validator
|
||||
from auth import scopes
|
||||
from auth.auth_context import get_authenticated_user
|
||||
from auth.permissions import SuperUserPermission
|
||||
|
@ -23,7 +23,7 @@ from endpoints.api.logs import get_logs, get_aggregate_logs
|
|||
from data import model
|
||||
from data.database import ServiceKeyApprovalType
|
||||
from util.useremails import send_confirmation_email, send_recovery_email
|
||||
from util.license import decode_license, LicenseError
|
||||
from util.license import decode_license, LicenseDecodeError
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
@ -851,11 +851,13 @@ class SuperUserLicense(ApiResource):
|
|||
if SuperUserPermission().can():
|
||||
try:
|
||||
decoded_license = config_provider.get_license()
|
||||
except LicenseError as le:
|
||||
except LicenseDecodeError as le:
|
||||
raise InvalidRequest(le.message)
|
||||
|
||||
if decoded_license.is_expired:
|
||||
raise InvalidRequest('License has expired')
|
||||
statuses = decoded_license.validate(app.config)
|
||||
all_met = all(status.is_met() for status in statuses)
|
||||
if not all_met:
|
||||
raise InvalidRequest('License is insufficient')
|
||||
|
||||
return {
|
||||
'decoded': decoded_license.subscription,
|
||||
|
@ -875,15 +877,20 @@ class SuperUserLicense(ApiResource):
|
|||
license_contents = request.get_json()['license']
|
||||
try:
|
||||
decoded_license = decode_license(license_contents)
|
||||
except LicenseError as le:
|
||||
except LicenseDecodeError as le:
|
||||
raise InvalidRequest(le.message)
|
||||
|
||||
if decoded_license.is_expired:
|
||||
raise InvalidRequest('License has expired')
|
||||
statuses = decoded_license.validate(app.config)
|
||||
all_met = all(status.is_met() for status in statuses)
|
||||
if not all_met:
|
||||
raise InvalidRequest('License is insufficient')
|
||||
|
||||
config_provider.save_license(license_contents)
|
||||
|
||||
license_validator.compute_license_sufficiency()
|
||||
|
||||
return {
|
||||
'decoded': decoded_license.subscription,
|
||||
'decoded': {},
|
||||
'success': True
|
||||
}
|
||||
|
||||
|
|
Reference in a new issue