diff --git a/src/Dependencies.py b/src/Dependencies.py index da430ca3144e4a03ed981793f41a6f0d91871c7d..0fe8160b864378bbb93232ad93a31727976c4542 100644 --- a/src/Dependencies.py +++ b/src/Dependencies.py @@ -4,6 +4,7 @@ from fastapi import Security, HTTPException from fastapi.security import APIKeyHeader from starlette.status import HTTP_403_FORBIDDEN +from Settings import SETTINGS from logic.databaseNew.Database import SessionLocal @@ -19,6 +20,6 @@ API_KEY_HEADER = APIKeyHeader(name='apiKey') async def check_api_key(apiKey: str = Security(API_KEY_HEADER)): - from main import API_KEY - if not secrets.compare_digest(API_KEY, apiKey): + expectedApiKey = SETTINGS['api']['key'] + if not secrets.compare_digest(expectedApiKey, apiKey): raise HTTPException(status_code=HTTP_403_FORBIDDEN, detail='apiKey invalid') diff --git a/src/Settings.py b/src/Settings.py new file mode 100644 index 0000000000000000000000000000000000000000..5b76c1dcc2728bd41226c56fc4620b254350310f --- /dev/null +++ b/src/Settings.py @@ -0,0 +1,4 @@ +import json + +with open('../settings.json', 'r', encoding='UTF-8') as f: + SETTINGS = json.load(f) diff --git a/src/logic/databaseNew/Database.py b/src/logic/databaseNew/Database.py index 72be7a8b49ce842371fc3d9b79c7eeda05e9a536..bec3c8d08e6956376e06fd1bdb1845d2627ffa99 100644 --- a/src/logic/databaseNew/Database.py +++ b/src/logic/databaseNew/Database.py @@ -2,10 +2,13 @@ from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker -SQLALCHEMY_DATABASE_URL = 'sqlite:///../../storageLeaf_new.db' +from Settings import SETTINGS + +databasePath = SETTINGS['database']['databasePath'] +databaseUrl = f'sqlite:///{databasePath}' engine = create_engine( - SQLALCHEMY_DATABASE_URL, connect_args={'check_same_thread': False} + databaseUrl, connect_args={'check_same_thread': False} ) SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) diff --git a/src/main.py b/src/main.py index 612933a939e0855ab4c62170430759ba13e594d5..726f3b5d60d4eab84aaf76f36cbdc6be836acb1a 100644 --- a/src/main.py +++ b/src/main.py @@ -4,6 +4,7 @@ import uvicorn from fastapi import FastAPI from starlette.responses import RedirectResponse, JSONResponse +from Settings import SETTINGS from logic import Constants from logic.databaseNew import Models from logic.databaseNew.Database import engine @@ -15,11 +16,6 @@ Models.Base.metadata.create_all(bind=engine) with open('version.json', 'r', encoding='UTF-8') as f: versionInfo = json.load(f)['version'] -with open('../settings.json', 'r', encoding='UTF-8') as f: - settings = json.load(f) - -API_KEY = settings['api']['key'] - app = FastAPI(title=Constants.APP_NAME, version=versionInfo['name'], description='The StorageLeaf API') @@ -36,4 +32,4 @@ async def version(): return JSONResponse(content=versionInfo) if __name__ == '__main__': - uvicorn.run(app, host=settings['server']['listen'], port=settings['server']['port']) + uvicorn.run(app, host=SETTINGS['server']['listen'], port=SETTINGS['server']['port'])