Преглед на файлове

feat: optimize service api authorization header invalid error (#910)

tags/0.3.15
takatost преди 2 години
родител
ревизия
09ea27f1ee
No account linked to committer's email address
променени са 1 файла, в които са добавени 6 реда и са изтрити 6 реда
  1. 6
    6
      api/controllers/service_api/wraps.py

+ 6
- 6
api/controllers/service_api/wraps.py Целия файл

def decorated(*args, **kwargs): def decorated(*args, **kwargs):
api_token = validate_and_get_api_token('app') api_token = validate_and_get_api_token('app')


app_model = db.session.query(App).get(api_token.app_id)
app_model = db.session.query(App).filter(App.id == api_token.app_id).first()
if not app_model: if not app_model:
raise NotFound() raise NotFound()


def decorated(*args, **kwargs): def decorated(*args, **kwargs):
api_token = validate_and_get_api_token('dataset') api_token = validate_and_get_api_token('dataset')


dataset = db.session.query(Dataset).get(api_token.dataset_id)
dataset = db.session.query(Dataset).filter(Dataset.id == api_token.dataset_id).first()
if not dataset: if not dataset:
raise NotFound() raise NotFound()


Validate and get API token. Validate and get API token.
""" """
auth_header = request.headers.get('Authorization') auth_header = request.headers.get('Authorization')
if auth_header is None:
raise Unauthorized()
if auth_header is None or ' ' not in auth_header:
raise Unauthorized("Authorization header must be provided and start with 'Bearer'")


auth_scheme, auth_token = auth_header.split(None, 1) auth_scheme, auth_token = auth_header.split(None, 1)
auth_scheme = auth_scheme.lower() auth_scheme = auth_scheme.lower()


if auth_scheme != 'bearer': if auth_scheme != 'bearer':
raise Unauthorized()
raise Unauthorized("Authorization scheme must be 'Bearer'")


api_token = db.session.query(ApiToken).filter( api_token = db.session.query(ApiToken).filter(
ApiToken.token == auth_token, ApiToken.token == auth_token,
).first() ).first()


if not api_token: if not api_token:
raise Unauthorized()
raise Unauthorized("Access token is invalid")


api_token.last_used_at = datetime.utcnow() api_token.last_used_at = datetime.utcnow()
db.session.commit() db.session.commit()

Loading…
Отказ
Запис