From f5c20ac16668c69aff8802f51b363e3e78a0f258 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Wed, 20 Sep 2023 18:42:52 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix(manager.py):=20call=20set=5F?= =?UTF-8?q?ready()=20method=20on=20the=20created=20service=20to=20indicate?= =?UTF-8?q?=20it=20is=20ready=20=F0=9F=90=9B=20fix(auth.py):=20validate=20?= =?UTF-8?q?superuser=20and=20superuser=5Fpassword=20fields=20if=20AUTO=5FL?= =?UTF-8?q?OGIN=20is=20true=20=E2=9C=A8=20feat(utils.py):=20add=20initiali?= =?UTF-8?q?ze=5Fdatabase()=20function=20to=20initialize=20the=20database?= =?UTF-8?q?=20connection=20=E2=9C=A8=20feat(utils.py):=20call=20initialize?= =?UTF-8?q?=5Fdatabase()=20before=20setting=20up=20the=20superuser=20if=20?= =?UTF-8?q?the=20database=20manager=20is=20ready?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/langflow/services/manager.py | 1 + src/backend/langflow/services/settings/auth.py | 18 ++++++++++++++++++ src/backend/langflow/services/utils.py | 18 ++++++++++-------- 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/src/backend/langflow/services/manager.py b/src/backend/langflow/services/manager.py index 205399d86..9398a10f4 100644 --- a/src/backend/langflow/services/manager.py +++ b/src/backend/langflow/services/manager.py @@ -61,6 +61,7 @@ class ServiceManager: self.services[service_name] = self.factories[service_name].create( **dependent_services ) + self.services[service_name].set_ready() def _validate_service_creation(self, service_name: ServiceType): """ diff --git a/src/backend/langflow/services/settings/auth.py b/src/backend/langflow/services/settings/auth.py index a42025b47..b6d288183 100644 --- a/src/backend/langflow/services/settings/auth.py +++ b/src/backend/langflow/services/settings/auth.py @@ -49,6 +49,24 @@ class AuthSettings(BaseSettings): self.SUPERUSER = DEFAULT_SUPERUSER self.SUPERUSER_PASSWORD = DEFAULT_SUPERUSER_PASSWORD + # If autologin is true, then we need to set the credentials to + # the default values + # so we need to validate the superuser and superuser_password + # fields + @validator("SUPERUSER", "SUPERUSER_PASSWORD", pre=True) + def validate_superuser(cls, value, values): + if values.get("AUTO_LOGIN"): + if value != DEFAULT_SUPERUSER: + value = DEFAULT_SUPERUSER + logger.debug("Resetting superuser to default value") + if values.get("SUPERUSER_PASSWORD") != DEFAULT_SUPERUSER_PASSWORD: + values["SUPERUSER_PASSWORD"] = DEFAULT_SUPERUSER_PASSWORD + logger.debug("Resetting superuser password to default value") + + return value + + return value + @validator("SECRET_KEY", pre=True) def get_secret_key(cls, value, values): config_dir = values.get("CONFIG_DIR") diff --git a/src/backend/langflow/services/utils.py b/src/backend/langflow/services/utils.py index 10b63bb52..5f8525797 100644 --- a/src/backend/langflow/services/utils.py +++ b/src/backend/langflow/services/utils.py @@ -1,4 +1,5 @@ from langflow.services.auth.utils import create_super_user +from langflow.services.database.utils import initialize_database from langflow.services.manager import service_manager from langflow.services.schema import ServiceType from langflow.services.settings.constants import ( @@ -18,17 +19,16 @@ def setup_superuser(): # if it does not exist. settings_manager = get_settings_manager() if settings_manager.auth_settings.AUTO_LOGIN: - logger.debug("AUTO_LOGIN is set to True. Not creating superuser automatically.") - return + logger.debug("AUTO_LOGIN is set to True. Creating default superuser.") session = next(get_session()) username = settings_manager.auth_settings.SUPERUSER password = settings_manager.auth_settings.SUPERUSER_PASSWORD if username == DEFAULT_SUPERUSER and password == DEFAULT_SUPERUSER_PASSWORD: - logger.debug( - "Using default superuser credentials. Please change them in production." - ) - return + logger.debug("Default superuser credentials detected.") + logger.debug("Creating default superuser.") + else: + logger.debug("Creating superuser.") try: from langflow.services.database.models.user.user import User @@ -136,6 +136,8 @@ def initialize_services(): # Test cache connection service_manager.get(ServiceType.CACHE_MANAGER) # Test database connection - service_manager.get(ServiceType.DATABASE_MANAGER) + db_manager = service_manager.get(ServiceType.DATABASE_MANAGER) # Setup the superuser - setup_superuser() + initialize_database() + if db_manager.ready: + setup_superuser()