add temporary access when database is empty

This commit is contained in:
Thomas Peetz
2026-02-10 08:36:43 +01:00
parent 69fb3c1e97
commit cc9d54f671
4 changed files with 19 additions and 9 deletions
+1 -1
View File
@@ -25,7 +25,7 @@ class LoginRequest(BaseModel):
) )
def login(request: LoginRequest) -> Token: def login(request: LoginRequest) -> Token:
logger.info(f"login with {request.email}") 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"] scopes = ["admin", "read"]
if not user: if not user:
raise HTTPException( raise HTTPException(
+10 -4
View File
@@ -13,7 +13,7 @@ from pydantic import ValidationError
from src.core.config import settings from src.core.config import settings
from src.core.log_conf import logger from src.core.log_conf import logger
from src.db.models.admin import Profile 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.db.session import SessionLocal
from src.schema.admin import ProfileModel, TokenData 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) user = get_profile(username=username, db=db)
logger.debug(user) logger.debug(user)
if not 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 return None
if bcrypt.checkpw(password.encode(), user.password.encode()):
print("User successful authenticated")
else: else:
logger.info("Authentication failed!") if bcrypt.checkpw(password.encode(), user.password.encode()):
print("User successful authenticated")
else:
logger.info("Authentication failed!")
return user return user
+4
View File
@@ -8,3 +8,7 @@ from src.db.models.admin import Profile
def get_profile(username: AnyStr, db: Session) -> Optional[Profile]: def get_profile(username: AnyStr, db: Session) -> Optional[Profile]:
profile = db.query(Profile).filter(Profile.email == username).first() profile = db.query(Profile).filter(Profile.email == username).first()
return profile return profile
def is_database_empty(db: Session) -> bool:
profiles = db.query(Profile).all()
return len(profiles) == 0
+4 -4
View File
@@ -12,11 +12,11 @@ def create_new_video(video: AddLinkForm, db: Session) -> MediaVideo:
print(video.url) print(video.url)
media_video = MediaVideo() media_video = MediaVideo()
media_video.id = str(uuid.uuid4()) 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.created_date = datetime.now()
media_video.last_modified_date = datetime.now() media_video.last_modified_date = datetime.now()
media_video.review = True # type: ignore media_video.review = True
media_video.should_download = True # type: ignore media_video.should_download = True
db.add(media_video) db.add(media_video)
db.commit() db.commit()
db.refresh(media_video) db.refresh(media_video)
@@ -27,7 +27,7 @@ def create_new_mediafile(link: str, db: Session) -> MediaFile:
logger.info("create MediaFile with url {link}") logger.info("create MediaFile with url {link}")
media_file: MediaFile = MediaFile() media_file: MediaFile = MediaFile()
media_file.id = str(uuid.uuid4()) media_file.id = str(uuid.uuid4())
media_file.url = link # type: ignore media_file.url = link
media_file.created_date = datetime.now() media_file.created_date = datetime.now()
media_file.last_modified_date = datetime.now() media_file.last_modified_date = datetime.now()
media_file.version = 0 media_file.version = 0