import hashlib
import hmac
from functools import wraps
from flask import request, jsonify
from config import Config

def validate_token(token):
    expected_token = hashlib.sha256(Config.API_SECRET_KEY.encode()).hexdigest()
    return hmac.compare_digest(token, expected_token)

def require_auth(f):
    @wraps(f)
    def decorated_function(*args, **kwargs):
        token = request.headers.get('Authorization')
        
        if not token:
            return jsonify({'error': 'Missing authorization token'}), 401
        
        if token.startswith('Bearer '):
            token = token[7:]
        
        if not validate_token(token):
            return jsonify({'error': 'Invalid authorization token'}), 401
        
        return f(*args, **kwargs)
    
    return decorated_function
