File size: 789 Bytes
4b63522
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# utils/auth.py
from functools import wraps
from flask import request, jsonify
from .models import User  # adjust import to your structure

def require_api_key(f):
    @wraps(f)
    def decorated_function(*args, **kwargs):
        auth_header = request.headers.get('Authorization')

        if not auth_header or not auth_header.startswith('Bearer '):
            return jsonify({"error": "Missing or invalid Authorization header."}), 401

        token = auth_header.split("Bearer ")[1].strip()

        user = User.query.filter_by(api_key=token).first()
        if not user:
            return jsonify({"error": "Invalid or revoked API key."}), 403

        request.user = user  # attach user to request for downstream use
        return f(*args, **kwargs)
    return decorated_function