diff options
author | HombreLaser <sebastian-440@live.com> | 2024-02-08 18:21:12 -0600 |
---|---|---|
committer | HombreLaser <sebastian-440@live.com> | 2024-02-08 18:21:12 -0600 |
commit | e91a86a714686a22149b55c9d5f0210cec8fef52 (patch) | |
tree | ac7212b106dac7a357b3f5a1a834b17f431f07bc /config | |
parent | a4dbf1cd8d0769b1ff1e0d99217f92b28b92e0d4 (diff) |
Add CORS
Diffstat (limited to 'config')
-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 |