DockFlare/mail-manager/app/api/middleware.py

28 lines
901 B
Python

from functools import wraps
from flask import request, jsonify
from app.core.jwt_auth import verify_jwt
def jwt_required(f):
@wraps(f)
def decorated(*args, **kwargs):
auth_header = request.headers.get('Authorization')
if not auth_header or not auth_header.startswith('Bearer '):
return jsonify({'error': 'Missing or invalid token'}), 401
token = auth_header.split(' ')[1]
decoded = verify_jwt(token)
if not decoded:
return jsonify({'error': 'Invalid token'}), 401
request.user = decoded
return f(*args, **kwargs)
return decorated
def admin_required(f):
@wraps(f)
@jwt_required
def decorated(*args, **kwargs):
if request.user.get('role') != 'admin':
return jsonify({'error': 'Admin required'}), 403
return f(*args, **kwargs)
return decorated