diff options
Diffstat (limited to 'config/__init__.py')
-rw-r--r-- | config/__init__.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/config/__init__.py b/config/__init__.py index 24ff968..6a623cf 100644 --- a/config/__init__.py +++ b/config/__init__.py @@ -1,6 +1,8 @@ import tomllib import re +from flask_cors import CORS import sqlalchemy.exc as sqlalchemy_exceptions +from sqlalchemy import select from src.database import db, init_db from src.database.models import Blog @@ -14,6 +16,7 @@ def initialize(app): # Check the config file for any blog domains. initialize_blogs(app) initialize_blueprints(app) + initialize_cors_policies(app) def database_connection_string(app): @@ -44,6 +47,20 @@ def initialize_blogs(app): break +def configured_blogs(app): + statement = select(Blog.domain).where(Blog.domain.in_(user_config['Blogs']['domains'])) + with app.app_context(): + return [r for r, in db.session.execute(statement)] + + +def initialize_cors_policies(app): + allowed_origins = configured_blogs(app) + cors_settings = {'resources': {r"/api/*": {'origins': allowed_origins}, + r"/static/*": {'origins': allowed_origins}} + } + CORS(app, **cors_settings) + + def initialize_blueprints(app): import src.controllers as app_controllers |