diff --git a/app/app.py b/app/app.py index 1f44273..59094c2 100644 --- a/app/app.py +++ b/app/app.py @@ -55,6 +55,29 @@ def queue_admin_generate(): # ================ # DECORATORS # ================ +def enforce_plan_limits(f): + @wraps(f) + def wrapper(*args, **kwargs): + db = SessionLocal() + + if app.config["AUTH_MODE"] == "oauth": + email = session["user"]["email"] + else: + email = session["db_user"]["email"] + + user = db.query(User).filter_by(email=email).first() + plan = db.query(Plan).filter_by(id=user.plan_id).first() + + # Limite de conversas + conv_count = db.query(Conversation).filter_by(user_email=email).count() + if conv_count >= plan.max_conversations: + db.close() + return jsonify({"erro": "VocĂȘ atingiu o limite de conversas do seu plano."}), 403 + + db.close() + return f(*args, **kwargs) + return wrapper + def require_subscription(f): @wraps(f)