1
0
Fork 0
mirror of https://github.com/EDeev/api_processor.git synced 2026-10-07 20:49:34 +03:00
api_processor/api_app/permissions.py
Egor Deev b211b10c39 Настройки из окружения, токен доступа, лимит размера, без утечки ошибок
- SECRET_KEY, DEBUG (по умолчанию выключен), ALLOWED_HOSTS — из DJANGO_*;
- необязательный API_TOKEN (заголовок Authorization: Bearer), лимит файла
  MAX_UPLOAD_SIZE_MB (по умолчанию 50);
- в ответ на ошибку больше не отдаётся текст исключения — он уходит в лог;
- Django 5.2 LTS: 4.2 больше не поддерживается.
2026-10-06 00:38:57 +00:00

16 lines
597 B
Python

import hmac
from django.conf import settings
from rest_framework.permissions import BasePermission
class ApiTokenPermission(BasePermission):
"""Если задан API_TOKEN, запросы должны нести заголовок Authorization: Bearer <токен>"""
message = "Нужен заголовок Authorization: Bearer <API_TOKEN>"
def has_permission(self, request, view):
if not settings.API_TOKEN:
return True
header = request.headers.get("Authorization", "")
return hmac.compare_digest(header, f"Bearer {settings.API_TOKEN}")