|
|
|
@ -1,5 +1,7 @@
|
|
|
|
import flask_restful
|
|
|
|
from typing import Any
|
|
|
|
from flask_login import current_user
|
|
|
|
|
|
|
|
|
|
|
|
import flask_restful # type: ignore
|
|
|
|
|
|
|
|
from flask_login import current_user # type: ignore
|
|
|
|
from flask_restful import Resource, fields, marshal_with
|
|
|
|
from flask_restful import Resource, fields, marshal_with
|
|
|
|
from werkzeug.exceptions import Forbidden
|
|
|
|
from werkzeug.exceptions import Forbidden
|
|
|
|
|
|
|
|
|
|
|
|
@ -35,14 +37,15 @@ def _get_resource(resource_id, tenant_id, resource_model):
|
|
|
|
class BaseApiKeyListResource(Resource):
|
|
|
|
class BaseApiKeyListResource(Resource):
|
|
|
|
method_decorators = [account_initialization_required, login_required, setup_required]
|
|
|
|
method_decorators = [account_initialization_required, login_required, setup_required]
|
|
|
|
|
|
|
|
|
|
|
|
resource_type = None
|
|
|
|
resource_type: str | None = None
|
|
|
|
resource_model = None
|
|
|
|
resource_model: Any = None
|
|
|
|
resource_id_field = None
|
|
|
|
resource_id_field: str | None = None
|
|
|
|
token_prefix = None
|
|
|
|
token_prefix: str | None = None
|
|
|
|
max_keys = 10
|
|
|
|
max_keys = 10
|
|
|
|
|
|
|
|
|
|
|
|
@marshal_with(api_key_list)
|
|
|
|
@marshal_with(api_key_list)
|
|
|
|
def get(self, resource_id):
|
|
|
|
def get(self, resource_id):
|
|
|
|
|
|
|
|
assert self.resource_id_field is not None, "resource_id_field must be set"
|
|
|
|
resource_id = str(resource_id)
|
|
|
|
resource_id = str(resource_id)
|
|
|
|
_get_resource(resource_id, current_user.current_tenant_id, self.resource_model)
|
|
|
|
_get_resource(resource_id, current_user.current_tenant_id, self.resource_model)
|
|
|
|
keys = (
|
|
|
|
keys = (
|
|
|
|
@ -54,6 +57,7 @@ class BaseApiKeyListResource(Resource):
|
|
|
|
|
|
|
|
|
|
|
|
@marshal_with(api_key_fields)
|
|
|
|
@marshal_with(api_key_fields)
|
|
|
|
def post(self, resource_id):
|
|
|
|
def post(self, resource_id):
|
|
|
|
|
|
|
|
assert self.resource_id_field is not None, "resource_id_field must be set"
|
|
|
|
resource_id = str(resource_id)
|
|
|
|
resource_id = str(resource_id)
|
|
|
|
_get_resource(resource_id, current_user.current_tenant_id, self.resource_model)
|
|
|
|
_get_resource(resource_id, current_user.current_tenant_id, self.resource_model)
|
|
|
|
if not current_user.is_editor:
|
|
|
|
if not current_user.is_editor:
|
|
|
|
@ -86,11 +90,12 @@ class BaseApiKeyListResource(Resource):
|
|
|
|
class BaseApiKeyResource(Resource):
|
|
|
|
class BaseApiKeyResource(Resource):
|
|
|
|
method_decorators = [account_initialization_required, login_required, setup_required]
|
|
|
|
method_decorators = [account_initialization_required, login_required, setup_required]
|
|
|
|
|
|
|
|
|
|
|
|
resource_type = None
|
|
|
|
resource_type: str | None = None
|
|
|
|
resource_model = None
|
|
|
|
resource_model: Any = None
|
|
|
|
resource_id_field = None
|
|
|
|
resource_id_field: str | None = None
|
|
|
|
|
|
|
|
|
|
|
|
def delete(self, resource_id, api_key_id):
|
|
|
|
def delete(self, resource_id, api_key_id):
|
|
|
|
|
|
|
|
assert self.resource_id_field is not None, "resource_id_field must be set"
|
|
|
|
resource_id = str(resource_id)
|
|
|
|
resource_id = str(resource_id)
|
|
|
|
api_key_id = str(api_key_id)
|
|
|
|
api_key_id = str(api_key_id)
|
|
|
|
_get_resource(resource_id, current_user.current_tenant_id, self.resource_model)
|
|
|
|
_get_resource(resource_id, current_user.current_tenant_id, self.resource_model)
|
|
|
|
|