From e64d3da7f4e59975854893ef22ff464316957435 Mon Sep 17 00:00:00 2001 From: wowlikon Date: Fri, 19 Dec 2025 21:49:44 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D0=BF=D0=B0=D1=80=D0=BE=D0=BB=D1=8F=20=D0=B0?= =?UTF-8?q?=D0=B4=D0=BC=D0=B8=D0=BD=D0=B8=D1=81=D1=82=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 4 ++++ library_service/auth.py | 15 +++++++++++---- library_service/settings.py | 2 +- migrations/env.py | 1 - 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/.env b/.env index 47af945..5c8e8ae 100644 --- a/.env +++ b/.env @@ -1,3 +1,7 @@ +# DEFAULT_ADMIN_USERNAME = "admin" +# DEFAULT_ADMIN_EMAIL = "admin@example.com" +# DEFAULT_ADMIN_PASSWORD = "password-is-generated-randomly-on-first-launch" + POSTGRES_HOST = "localhost" POSTGRES_PORT = "5432" POSTGRES_USER = "postgres" diff --git a/library_service/auth.py b/library_service/auth.py index bfe1831..de4d590 100644 --- a/library_service/auth.py +++ b/library_service/auth.py @@ -25,7 +25,7 @@ REFRESH_TOKEN_EXPIRE_DAYS = int(os.getenv("REFRESH_TOKEN_EXPIRE_DAYS", "7")) logger = get_logger("uvicorn") # OAuth2 схема -oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/auth/token") +oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/api/auth/token") # Хэширование паролей pwd_context = CryptContext(schemes=["argon2"], deprecated="auto") @@ -177,18 +177,18 @@ def seed_admin(session: Session, admin_role: Role) -> User | None: ).all() if existing_admins: - logger.info(f"[*] Admin already exists: {existing_admins[0].username}") + logger.info(f"[=] Admin already exists: {existing_admins[0].username}, skipping creation") return None admin_username = os.getenv("DEFAULT_ADMIN_USERNAME", "admin") admin_email = os.getenv("DEFAULT_ADMIN_EMAIL", "admin@example.com") admin_password = os.getenv("DEFAULT_ADMIN_PASSWORD") + generated = False if not admin_password: import secrets admin_password = secrets.token_urlsafe(16) - logger.warning(f"[!] Generated admin password: {admin_password}") - logger.warning("[!] Please save this password and set DEFAULT_ADMIN_PASSWORD env var") + generated = True admin_user = User( username=admin_username, @@ -205,6 +205,13 @@ def seed_admin(session: Session, admin_role: Role) -> User | None: session.refresh(admin_user) logger.info(f"[+] Created admin user: {admin_username}") + + if generated: + logger.warning("=" * 50) + logger.warning(f"[!] GENERATED ADMIN PASSWORD: {admin_password}") + logger.warning("[!] Save this password! It won't be shown again!") + logger.warning("=" * 50) + return admin_user diff --git a/library_service/settings.py b/library_service/settings.py index 7f8d038..22e08fc 100644 --- a/library_service/settings.py +++ b/library_service/settings.py @@ -60,7 +60,7 @@ if not USER or not PASSWORD or not DATABASE or not HOST: raise ValueError("Missing environment variables") POSTGRES_DATABASE_URL = f"postgresql://{USER}:{PASSWORD}@{HOST}:{PORT}/{DATABASE}" -engine = create_engine(POSTGRES_DATABASE_URL, echo=True, future=True) +engine = create_engine(POSTGRES_DATABASE_URL, echo=False, future=True) def get_session(): diff --git a/migrations/env.py b/migrations/env.py index dee1f96..af5c8d9 100644 --- a/migrations/env.py +++ b/migrations/env.py @@ -6,7 +6,6 @@ from sqlmodel import SQLModel from library_service.settings import POSTGRES_DATABASE_URL -print(POSTGRES_DATABASE_URL) # this is the Alembic Config object, which provides # access to the values within the .ini file in use.