from functools import wraps
from flask import request
from utils.jwt_service import decode_token

def auth_required(f):
    @wraps(f)
    def decorated(*args, **kwargs):
        auth_header = request.headers.get("Authorization")
        if not auth_header:
            return {
                "status": False,
                "message": "Authorization header missing"
            }, 401

        token = auth_header.replace("Bearer ", "")
        payload = decode_token(token)
        if not payload:
            return {
                "status": False,
                "message": "Invalid or expired token"
            }, 401

        request.user_id = payload.get("id")
        return f(*args, **kwargs)

    return decorated
