| 1 | from uuid import uuid4 |
| 2 | |
| 3 | from fastapi import Request |
| 4 | |
| 5 | from app.config import config |
| 6 | from app.models.exception import HttpException |
| 7 | |
| 8 | |
| 9 | def get_task_id(request: Request): |
| 10 | task_id = request.headers.get("x-task-id") |
| 11 | if not task_id: |
| 12 | task_id = uuid4() |
| 13 | return str(task_id) |
| 14 | |
| 15 | |
| 16 | def get_api_key(request: Request): |
| 17 | api_key = request.headers.get("x-api-key") |
| 18 | return api_key |
| 19 | |
| 20 | |
| 21 | def verify_token(request: Request): |
| 22 | token = get_api_key(request) |
| 23 | if token != config.app.get("api_key", ""): |
| 24 | request_id = get_task_id(request) |
| 25 | request_url = request.url |
| 26 | user_agent = request.headers.get("user-agent") |
| 27 | raise HttpException( |
| 28 | task_id=request_id, |
| 29 | status_code=401, |
| 30 | message=f"invalid token: {request_url}, {user_agent}", |
| 31 | ) |
| 32 |