Files
sdb-back/app/services/decorators.py
2025-06-27 13:14:29 +02:00

37 lines
1.2 KiB
Python

"""Authentication decorators and middleware."""
from functools import wraps
from typing import Any, Callable
from flask import jsonify, request
from app.services.token_service import TokenService
def require_auth(f: Callable[..., Any]) -> Callable[..., Any]:
"""Decorator to require authentication for routes."""
@wraps(f)
def decorated_function(*args: Any, **kwargs: Any) -> Any:
token_service = TokenService()
access_token = request.cookies.get("access_token")
if not access_token:
return jsonify({"error": "Authentication required"}), 401
user_data = token_service.get_user_from_access_token(access_token)
if not user_data:
return jsonify({"error": "Invalid or expired token"}), 401
return f(*args, **kwargs)
return decorated_function
def get_current_user() -> dict[str, Any] | None:
"""Helper function to get current user from access token."""
token_service = TokenService()
access_token = request.cookies.get("access_token")
if not access_token:
return None
return token_service.get_user_from_access_token(access_token)