diff --git a/src/backend/langflow/services/database/manager.py b/src/backend/langflow/services/database/manager.py index 7465c804f..6513ca280 100644 --- a/src/backend/langflow/services/database/manager.py +++ b/src/backend/langflow/services/database/manager.py @@ -1,17 +1,19 @@ from pathlib import Path from typing import TYPE_CHECKING + +import sqlalchemy as sa +from alembic import command +from alembic.config import Config from langflow.services.base import Service +from langflow.services.database import models # noqa from langflow.services.database.models.user.crud import get_user_by_username from langflow.services.database.utils import Result, TableResults from langflow.services.getters import get_settings_service -from sqlalchemy import inspect -import sqlalchemy as sa -from sqlalchemy.exc import OperationalError -from sqlmodel import SQLModel, Session, create_engine +from langflow.services.utils import teardown_superuser from loguru import logger -from alembic.config import Config -from alembic import command -from langflow.services.database import models # noqa +from sqlalchemy import inspect +from sqlalchemy.exc import OperationalError +from sqlmodel import Session, SQLModel, create_engine if TYPE_CHECKING: from sqlalchemy.engine import Engine @@ -225,14 +227,8 @@ class DatabaseService(Service): settings_service = get_settings_service() # remove the default superuser if auto_login is enabled # using the SUPERUSER to get the user - if settings_service.auth_settings.AUTO_LOGIN: - logger.debug("Removing default superuser") - username = settings_service.auth_settings.SUPERUSER - with Session(self.engine) as session: - user = get_user_by_username(session, username) - session.delete(user) - session.commit() - logger.debug("Default superuser removed") + with Session(self.engine) as session: + teardown_superuser(settings_service, session) except Exception as exc: logger.error(f"Error tearing down database: {exc}") diff --git a/src/backend/langflow/services/utils.py b/src/backend/langflow/services/utils.py index adbf072fe..1e777d855 100644 --- a/src/backend/langflow/services/utils.py +++ b/src/backend/langflow/services/utils.py @@ -1,3 +1,6 @@ +from loguru import logger +from sqlmodel import Session + from langflow.services.auth.utils import create_super_user, verify_password from langflow.services.database.utils import initialize_database from langflow.services.manager import service_manager @@ -6,19 +9,18 @@ from langflow.services.settings.constants import ( DEFAULT_SUPERUSER, DEFAULT_SUPERUSER_PASSWORD, ) -from sqlmodel import Session + from .getters import get_db_service, get_session, get_settings_service -from loguru import logger def get_factories_and_deps(): - from langflow.services.database import factory as database_factory + from langflow.services.auth import factory as auth_factory from langflow.services.cache import factory as cache_factory from langflow.services.chat import factory as chat_factory - from langflow.services.settings import factory as settings_factory - from langflow.services.auth import factory as auth_factory - from langflow.services.task import factory as task_factory + from langflow.services.database import factory as database_factory from langflow.services.session import factory as session_service_factory # type: ignore + from langflow.services.settings import factory as settings_factory + from langflow.services.task import factory as task_factory return [ (settings_factory.SettingsServiceFactory(), []), @@ -130,10 +132,10 @@ def teardown_superuser(settings_service, session): # If AUTO_LOGIN is True, we will remove the default superuser # from the database. - if settings_service.auth_settings.AUTO_LOGIN: + if not settings_service.auth_settings.AUTO_LOGIN: try: - logger.debug("AUTO_LOGIN is set to True. Removing default superuser.") - username = settings_service.auth_settings.SUPERUSER + logger.debug("AUTO_LOGIN is set to False. Removing default superuser if exists.") + username = DEFAULT_SUPERUSER from langflow.services.database.models.user.user import User user = session.query(User).filter(User.username == username).first() @@ -175,8 +177,8 @@ def initialize_session_service(): """ Initialize the session manager. """ - from langflow.services.session import factory as session_service_factory # type: ignore from langflow.services.cache import factory as cache_factory + from langflow.services.session import factory as session_service_factory # type: ignore initialize_settings_service()