bugfix: settings delta clearing auth
frdel committed
Feb 10, 2026 at 17:13 UTC
343b14117803d1f4402ec19db3160ee41bbaf362
2 files changed
+28
-4
python/helpers/login.py
+3
-3
@@ -3,13 +3,13 @@ import hashlib
3
4
5
def get_credentials_hash():
6
- user = dotenv.get_dotenv_value("AUTH_LOGIN")
7
- password = dotenv.get_dotenv_value("AUTH_PASSWORD")
6
+ user = dotenv.get_dotenv_value(dotenv.KEY_AUTH_LOGIN)
7
+ password = dotenv.get_dotenv_value(dotenv.KEY_AUTH_PASSWORD)
8
if not user:
9
return None
10
return hashlib.sha256(f"{user}:{password}".encode()).hexdigest()
11
12
13
def is_login_required():
14
- user = dotenv.get_dotenv_value("AUTH_LOGIN")
14
+ user = dotenv.get_dotenv_value(dotenv.KEY_AUTH_LOGIN)
15
return bool(user)
python/helpers/settings.py
+25
-1
@@ -359,6 +359,7 @@ def get_settings() -> Settings:
359
if not _settings:
360
_settings = get_default_settings()
361
norm = normalize_settings(_settings)
362
+ _load_sensitive_settings(norm)
363
return norm
364
365
@@ -380,7 +381,7 @@ def set_settings(settings: Settings, apply: bool = True):
381
_write_settings_file(_settings)
382
if apply:
383
_apply_settings(previous)
383
- return _settings
384
+ return reload_settings()
385
386
387
def set_settings_delta(delta: dict, apply: bool = True):
@@ -436,6 +437,29 @@ def _adjust_to_version(settings: Settings, default: Settings):
437
438
439
440
+def _load_sensitive_settings(settings: Settings):
441
+ # load api keys from .env
442
+ providers = get_providers("chat") + get_providers("embedding")
443
+ for provider in providers:
444
+ provider_name = provider["value"]
445
+ api_key = settings["api_keys"].get(provider_name) or models.get_api_key(provider_name)
446
+ if api_key and api_key != "None":
447
+ settings["api_keys"][provider_name] = api_key
448
+
449
+ # load auth fields from .env
450
+ settings["auth_login"] = dotenv.get_dotenv_value(dotenv.KEY_AUTH_LOGIN) or ""
451
+ settings["auth_password"] = dotenv.get_dotenv_value(dotenv.KEY_AUTH_PASSWORD) or ""
452
+ settings["rfc_password"] = dotenv.get_dotenv_value(dotenv.KEY_RFC_PASSWORD) or ""
453
+ settings["root_password"] = dotenv.get_dotenv_value(dotenv.KEY_ROOT_PASSWORD) or ""
454
+
455
+ # load secrets raw content
456
+ secrets_manager = get_default_secrets_manager()
457
+ try:
458
+ settings["secrets"] = secrets_manager.read_secrets_raw()
459
+ except Exception:
460
+ settings["secrets"] = ""
461
+
462
+
463
def _read_settings_file() -> Settings | None:
464
if os.path.exists(SETTINGS_FILE):
465
content = files.read_file(SETTINGS_FILE)