From d05e085c4c61714e0f9ae1ae8328379656911a84 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Tue, 26 Sep 2023 15:14:20 -0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix(auth.py):=20change=20refresh?= =?UTF-8?q?=20token=20expiration=20time=20from=2070=20minutes=20to=2012=20?= =?UTF-8?q?hours=20for=20better=20security=20and=20usability=20=E2=9C=A8?= =?UTF-8?q?=20feat(auth.py):=20add=20logging=20statements=20to=20provide?= =?UTF-8?q?=20more=20visibility=20into=20secret=20key=20generation=20and?= =?UTF-8?q?=20saving=20process=20=F0=9F=90=9B=20fix(auth.py):=20handle=20I?= =?UTF-8?q?OError=20when=20reading=20or=20writing=20secret=20key=20to=20pr?= =?UTF-8?q?event=20unexpected=20failures?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../langflow/services/settings/auth.py | 41 ++++++++++--------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/src/backend/langflow/services/settings/auth.py b/src/backend/langflow/services/settings/auth.py index 4a3eee100..621d9e973 100644 --- a/src/backend/langflow/services/settings/auth.py +++ b/src/backend/langflow/services/settings/auth.py @@ -23,7 +23,7 @@ class AuthSettings(BaseSettings): ) ALGORITHM: str = "HS256" ACCESS_TOKEN_EXPIRE_MINUTES: int = 60 - REFRESH_TOKEN_EXPIRE_MINUTES: int = 70 + REFRESH_TOKEN_EXPIRE_MINUTES: int = 60 * 12 # API Key to execute /process endpoint API_KEY_SECRET_KEY: Optional[ @@ -70,30 +70,33 @@ class AuthSettings(BaseSettings): @validator("SECRET_KEY", pre=True) def get_secret_key(cls, value, values): - config_dir = values.get("CONFIG_DIR") + config_dir: Path = values.get("CONFIG_DIR") if not config_dir: - logger.debug("No CONFIG_DIR provided, not saving secret key") + logger.warn("No CONFIG_DIR provided; not saving secret key.") return value or secrets.token_urlsafe(32) - secret_key_path = Path(config_dir) / "secret_key" + secret_key_path = config_dir / "secret_key" - if value: - logger.debug("Secret key provided") - write_secret_to_file(secret_key_path, value) - else: - logger.debug("No secret key provided, generating a random one") - - if secret_key_path.exists(): - value = read_secret_from_file(secret_key_path) - logger.debug("Loaded secret key") - if not value: + try: + if value: + logger.info("Secret key provided.") + write_secret_to_file(secret_key_path, value) + else: + logger.info("No secret key provided, generating a random one.") + if secret_key_path.exists(): + value = read_secret_from_file(secret_key_path) + logger.info("Loaded secret key.") + if not value: + value = secrets.token_urlsafe(32) + write_secret_to_file(secret_key_path, value) + logger.info("Saved secret key.") + else: value = secrets.token_urlsafe(32) write_secret_to_file(secret_key_path, value) - logger.debug("Saved secret key") - else: - value = secrets.token_urlsafe(32) - write_secret_to_file(secret_key_path, value) - logger.debug("Saved secret key") + logger.info("Saved secret key.") + except IOError: + logger.error("Failed to read or write secret key.") + raise IOError("Failed to read or write secret key.") return value