34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
# Tool/env_manager.py
|
|
#
|
|
# Lettura e scrittura delle variabili d'ambiente nel file .env del dashboard.
|
|
|
|
import re
|
|
|
|
from .config import REPORTS_DIR, _auth
|
|
|
|
|
|
def _set_env_key(text: str, key: str, value: str) -> str:
|
|
"""Replace or append a KEY=value line in .env content."""
|
|
new, n = re.subn(rf'^#?\s*{key}=.*$', f'{key}={value}', text, flags=re.MULTILINE)
|
|
return new if n else text + f'\n{key}={value}\n'
|
|
|
|
|
|
def update_auth(enabled: bool, user: str | None = None, password: str | None = None) -> None:
|
|
"""Write LOGIN/DASHBOARD_USER/DASHBOARD_PASSWORD to .env and update _auth in memory."""
|
|
env_path = REPORTS_DIR / '.env'
|
|
text = env_path.read_text(encoding='utf-8')
|
|
|
|
text = _set_env_key(text, 'LOGIN', 'true' if enabled else 'false')
|
|
if user is not None:
|
|
text = _set_env_key(text, 'DASHBOARD_USER', user)
|
|
if password is not None:
|
|
text = _set_env_key(text, 'DASHBOARD_PASSWORD', password)
|
|
|
|
env_path.write_text(text, encoding='utf-8')
|
|
|
|
_auth['enabled'] = enabled
|
|
if user is not None:
|
|
_auth['user'] = user
|
|
if password is not None:
|
|
_auth['password'] = password
|