From cc9d54f6716fa272b7e2a19b915b74233e41fa2c Mon Sep 17 00:00:00 2001 From: Thomas Peetz Date: Tue, 10 Feb 2026 08:36:43 +0100 Subject: [PATCH] add temporary access when database is empty --- kontor-api/src/apis/version1/login.py | 2 +- kontor-api/src/core/security.py | 14 ++++++++++---- kontor-api/src/db/repository/admin.py | 4 ++++ kontor-api/src/db/repository/media.py | 8 ++++---- 4 files changed, 19 insertions(+), 9 deletions(-) diff --git a/kontor-api/src/apis/version1/login.py b/kontor-api/src/apis/version1/login.py index f6b28b7..698561a 100644 --- a/kontor-api/src/apis/version1/login.py +++ b/kontor-api/src/apis/version1/login.py @@ -25,7 +25,7 @@ class LoginRequest(BaseModel): ) def login(request: LoginRequest) -> Token: logger.info(f"login with {request.email}") - user = authenticate_user(request.email, request.password) # type: ignore + user = authenticate_user(request.email, request.password) scopes = ["admin", "read"] if not user: raise HTTPException( diff --git a/kontor-api/src/core/security.py b/kontor-api/src/core/security.py index 10c8796..2465900 100644 --- a/kontor-api/src/core/security.py +++ b/kontor-api/src/core/security.py @@ -13,7 +13,7 @@ from pydantic import ValidationError from src.core.config import settings from src.core.log_conf import logger from src.db.models.admin import Profile -from src.db.repository.admin import get_profile +from src.db.repository.admin import get_profile, is_database_empty from src.db.session import SessionLocal from src.schema.admin import ProfileModel, TokenData @@ -57,11 +57,17 @@ def authenticate_user(username: str, password: str) -> Optional[Profile]: user = get_profile(username=username, db=db) logger.debug(user) if not user: + if is_database_empty(db): + logger.info("database is empty, use temporary access") + user = Profile() + user.email = "init_user@thpeetz.de" + return user return None - if bcrypt.checkpw(password.encode(), user.password.encode()): - print("User successful authenticated") else: - logger.info("Authentication failed!") + if bcrypt.checkpw(password.encode(), user.password.encode()): + print("User successful authenticated") + else: + logger.info("Authentication failed!") return user diff --git a/kontor-api/src/db/repository/admin.py b/kontor-api/src/db/repository/admin.py index cc06404..9b757b3 100644 --- a/kontor-api/src/db/repository/admin.py +++ b/kontor-api/src/db/repository/admin.py @@ -8,3 +8,7 @@ from src.db.models.admin import Profile def get_profile(username: AnyStr, db: Session) -> Optional[Profile]: profile = db.query(Profile).filter(Profile.email == username).first() return profile + +def is_database_empty(db: Session) -> bool: + profiles = db.query(Profile).all() + return len(profiles) == 0 diff --git a/kontor-api/src/db/repository/media.py b/kontor-api/src/db/repository/media.py index 74a072f..9fbbb53 100644 --- a/kontor-api/src/db/repository/media.py +++ b/kontor-api/src/db/repository/media.py @@ -12,11 +12,11 @@ def create_new_video(video: AddLinkForm, db: Session) -> MediaVideo: print(video.url) media_video = MediaVideo() media_video.id = str(uuid.uuid4()) - media_video.url = video.url # type: ignore + media_video.url = video.url media_video.created_date = datetime.now() media_video.last_modified_date = datetime.now() - media_video.review = True # type: ignore - media_video.should_download = True # type: ignore + media_video.review = True + media_video.should_download = True db.add(media_video) db.commit() db.refresh(media_video) @@ -27,7 +27,7 @@ def create_new_mediafile(link: str, db: Session) -> MediaFile: logger.info("create MediaFile with url {link}") media_file: MediaFile = MediaFile() media_file.id = str(uuid.uuid4()) - media_file.url = link # type: ignore + media_file.url = link media_file.created_date = datetime.now() media_file.last_modified_date = datetime.now() media_file.version = 0