formatting fixes
Build and Push Docker Image / build-and-push (pull_request) Successful in 58s
Python Code Quality / python-code-quality (pull_request) Successful in 10s
Python Test / python-test (pull_request) Successful in 17s

This commit is contained in:
Brian Bjarke Jensen
2025-11-07 23:56:38 +01:00
parent ef1c7f83b6
commit 19a211121c
3 changed files with 12 additions and 18 deletions
@@ -34,10 +34,10 @@ def _ensure_admin_user() -> None:
"""Create or update admin user from environment variables.""" """Create or update admin user from environment variables."""
from baby_monitor.models.db.user import User from baby_monitor.models.db.user import User
from baby_monitor.utils.password import hash_password from baby_monitor.utils.password import hash_password
admin_username = os.getenv("ADMIN_USERNAME") admin_username = os.getenv("ADMIN_USERNAME")
admin_password = os.getenv("ADMIN_PASSWORD") admin_password = os.getenv("ADMIN_PASSWORD")
if not admin_username: if not admin_username:
raise RuntimeError( raise RuntimeError(
"ADMIN_USERNAME environment variable is required but not set" "ADMIN_USERNAME environment variable is required but not set"
@@ -46,16 +46,14 @@ def _ensure_admin_user() -> None:
raise RuntimeError( raise RuntimeError(
"ADMIN_PASSWORD environment variable is required but not set" "ADMIN_PASSWORD environment variable is required but not set"
) )
db = SessionLocal() db = SessionLocal()
try: try:
# Check if admin user exists # Check if admin user exists
admin_user = db.query(User).filter( admin_user = db.query(User).filter(User.username == admin_username).first()
User.username == admin_username
).first()
hashed_pw = hash_password(admin_password) hashed_pw = hash_password(admin_password)
if admin_user: if admin_user:
# Update existing admin user's password and ensure admin flag # Update existing admin user's password and ensure admin flag
admin_user.hashed_password = hashed_pw # type: ignore[assignment] admin_user.hashed_password = hashed_pw # type: ignore[assignment]
@@ -84,7 +82,7 @@ def init_db() -> None:
# Ensure data directory exists # Ensure data directory exists
DATA_DIR.mkdir(parents=True, exist_ok=True) DATA_DIR.mkdir(parents=True, exist_ok=True)
Base.metadata.create_all(bind=engine) Base.metadata.create_all(bind=engine)
# Create admin user if it doesn't exist # Create admin user if it doesn't exist
_ensure_admin_user() _ensure_admin_user()
@@ -42,7 +42,7 @@ class InMemoryTokenRepository(TokenRepositoryInterface):
def cleanup_expired(self) -> None: def cleanup_expired(self) -> None:
"""Remove expired tokens.""" """Remove expired tokens."""
now = datetime.utcnow() now = datetime.now(UTC)
expired_tokens = [ expired_tokens = [
token for token, (_, expiry) in self._tokens.items() if now > expiry token for token, (_, expiry) in self._tokens.items() if now > expiry
] ]
+4 -8
View File
@@ -80,16 +80,12 @@ def login(
# Check if user exists in database # Check if user exists in database
user = user_repo.get_by_username(credentials.username) user = user_repo.get_by_username(credentials.username)
if not user: if not user:
raise HTTPException( raise HTTPException(status_code=401, detail="Invalid username or password")
status_code=401, detail="Invalid username or password"
)
# Verify password using bcrypt # Verify password using bcrypt
if not verify_password(credentials.password, user["hashed_password"]): if not verify_password(credentials.password, user["hashed_password"]):
raise HTTPException( raise HTTPException(status_code=401, detail="Invalid username or password")
status_code=401, detail="Invalid username or password"
)
# Generate a secure random token # Generate a secure random token
access_token = secrets.token_urlsafe(32) access_token = secrets.token_urlsafe(32)
token_repo.store(access_token, user_id=user["id"], ttl=3600) token_repo.store(access_token, user_id=user["id"], ttl=3600)