pdfcompare / app.py
thejagstudio's picture
Update app.py
cf0324d verified
import os
from flask import Flask, render_template, request, jsonify, send_from_directory
from flask_cors import CORS
from werkzeug.utils import secure_filename
from pdf_logic import process_comparison
app = Flask(__name__)
CORS(app)
# Configuration
UPLOAD_FOLDER = 'static/uploads'
OUTPUT_FOLDER = 'static/output'
os.makedirs(UPLOAD_FOLDER, exist_ok=True)
os.makedirs(OUTPUT_FOLDER, exist_ok=True)
@app.route('/compare', methods=['POST'])
def compare():
if 'source' not in request.files or 'destination' not in request.files:
return jsonify({'error': 'Missing files'}), 400
source_file = request.files['source']
dest_file = request.files['destination']
s_path = os.path.join(UPLOAD_FOLDER, secure_filename(source_file.filename))
d_path = os.path.join(UPLOAD_FOLDER, secure_filename(dest_file.filename))
source_file.save(s_path)
dest_file.save(d_path)
try:
# Run the comparison logic
src_out, dest_out, changes, total_pages = process_comparison(s_path, d_path, OUTPUT_FOLDER)
return jsonify({
'status': 'success',
'source_pdf': f"/static/output/{src_out}",
'dest_pdf': f"/static/output/{dest_out}",
'changes': changes,
'total_pages': total_pages
})
except Exception as e:
print(e)
return jsonify({'error': str(e)}), 500
# WorkOS Configuration
import workos
from workos import WorkOSClient
# Initialize WorkOS Client
# In production, use environment variables: os.environ.get('WORKOS_API_KEY')
# For now we will check if they exist, otherwise these endpoints will fail gracefully or you can hardcode for testing if needed
workos.api_key = os.environ.get('WORKOS_API_KEY', 'placeholder_key')
workos.client_id = os.environ.get('WORKOS_CLIENT_ID', 'placeholder_id')
workos_client = WorkOSClient(api_key=workos.api_key, client_id=workos.client_id)
@app.route('/auth/logout-everywhere', methods=['POST'])
def logout_everywhere():
"""
Revokes ALL sessions for the user.
Expects JSON: { "userId": "user_..." }
"""
data = request.json
user_id = data.get('userId')
if not user_id:
return jsonify({'error': 'Missing userId'}), 400
try:
# List all sessions
sessions_list = workos_client.user_management.list_sessions(user_id=user_id)
# Revoke all
for session in sessions_list.data:
workos_client.user_management.revoke_session(session_id=session.id)
return jsonify({'status': 'success', 'message': 'All sessions revoked.'})
except Exception as e:
print(f"WorkOS Error: {e}")
return jsonify({'error': str(e)}), 500
app.run(host="0.0.0.0", port=7860, debug=True)