- Minor bugfixes
This commit is contained in:
@@ -1,12 +1,14 @@
|
||||
import logging
|
||||
import logging.config
|
||||
from flask import Flask, jsonify
|
||||
from flask import Flask, jsonify, request
|
||||
import os
|
||||
|
||||
from flask_jwt_extended import verify_jwt_in_request, get_jwt_identity
|
||||
|
||||
from common.extensions import db, socketio, jwt, cors, session, simple_encryption, metrics
|
||||
from config.logging_config import LOGGING
|
||||
from eveai_chat.socket_handlers import chat_handler
|
||||
from common.utils.cors_utils import create_cors_after_request
|
||||
from common.utils.cors_utils import create_cors_after_request, get_allowed_origins
|
||||
from common.utils.celery_utils import make_celery, init_celery
|
||||
from config.config import get_config
|
||||
|
||||
@@ -32,6 +34,32 @@ def create_app(config_file=None):
|
||||
app.celery = make_celery(app.name, app.config)
|
||||
init_celery(app.celery, app)
|
||||
|
||||
@app.before_request
|
||||
def check_cors():
|
||||
app.logger.debug('Checking CORS')
|
||||
if request.method == 'OPTIONS':
|
||||
app.logger.debug("Handling OPTIONS request")
|
||||
return '', 200 # Allow OPTIONS to pass through
|
||||
|
||||
origin = request.headers.get('Origin')
|
||||
if not origin:
|
||||
return # Not a CORS request
|
||||
|
||||
# Get tenant ID from request
|
||||
if verify_jwt_in_request():
|
||||
tenant_id = get_jwt_identity()
|
||||
if not tenant_id:
|
||||
return
|
||||
else:
|
||||
return
|
||||
|
||||
# Check if origin is allowed for this tenant
|
||||
allowed_origins = get_allowed_origins(tenant_id)
|
||||
|
||||
if origin not in allowed_origins:
|
||||
app.logger.warning(f'Origin {origin} not allowed for tenant {tenant_id}')
|
||||
return {'error': 'Origin not allowed'}, 403
|
||||
|
||||
app.logger.info("EveAI Chat Server Started Successfully")
|
||||
app.logger.info("-------------------------------------------------------------------------------------------------")
|
||||
return app
|
||||
@@ -54,8 +82,17 @@ def register_extensions(app):
|
||||
metrics.init_app(app)
|
||||
|
||||
# Cors setup
|
||||
cors.init_app(app, resources={r"/chat/*": {"origins": "*"}})
|
||||
app.after_request(create_cors_after_request('/chat'))
|
||||
cors.init_app(app, resources={
|
||||
r"/*": { # Make sure this matches your setup
|
||||
"origins": "*",
|
||||
"methods": ["GET", "POST", "PUT", "OPTIONS"],
|
||||
"allow_headers": ["Content-Type", "Authorization", "X-Requested-With"],
|
||||
"expose_headers": ["Content-Length", "Content-Range"],
|
||||
"supports_credentials": True,
|
||||
"max_age": 1728000,
|
||||
"allow_credentials": True
|
||||
}
|
||||
})
|
||||
|
||||
session.init_app(app)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user