feat(discord-bridge): dashboard fara token (DASHBOARD_AUTH=off)
Cerut explicit: tokenul nu se retine. Cu DASHBOARD_AUTH=off nu mai exista login, /login.html duce inapoi la panou, iar butonul "Iesi" dispare. Se sprijina pe doua lucruri si nu are sens fara ele: serviciul e legat de 127.0.0.1, deci din retea ajunge la el doar tailscaled; iar tailscale serve il publica tainet only, unde accesul e deja autentificat de Tailscale. Compensatie partiala pentru ce se pierde: fiecare start/stop/restart se scrie in logs/dashboard.log cu identitatea din antetul Tailscale-User-Login pus de tailscale serve (verificat: ajunge pana la noi). Antetul e DOAR pentru jurnal — nu decide accesul, fiindca un proces local l-ar putea fabrica. Implicitul ramane cu token: doar off/none/0/false scot login-ul, orice alta valoare il pastreaza (are test). Sase teste noi, 41 pe dashboard. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01B29CApsP1JkSdjYaGaHpE7
This commit is contained in:
@@ -407,3 +407,53 @@ def test_paginile_nu_se_pun_in_cache(server_cu_prefix):
|
||||
server_cu_prefix.login()
|
||||
_, _, resp = server_cu_prefix.call("/")
|
||||
assert resp.headers.get("Cache-Control") == "no-store"
|
||||
|
||||
|
||||
# --- mod fara autentificare (DASHBOARD_AUTH=off) ----------------------------
|
||||
|
||||
@pytest.fixture()
|
||||
def server_fara_auth(server, state_dir):
|
||||
(state_dir / "env").write_text(
|
||||
"DASHBOARD_TOKEN=secret-de-test\nDASHBOARD_AUTH=off\n", encoding="utf-8")
|
||||
config.reload(state_dir)
|
||||
return server
|
||||
|
||||
|
||||
def test_fara_auth_apiul_raspunde_fara_cookie(server_fara_auth):
|
||||
status, data, _ = server_fara_auth.call("/api/status")
|
||||
assert status == 200 and data["auth"] is False
|
||||
|
||||
|
||||
def test_fara_auth_pagina_se_serveste_direct(server_fara_auth):
|
||||
status, data, resp = server_fara_auth.call("/")
|
||||
assert status == 200
|
||||
assert "Punte Discord" in data["_html"]
|
||||
assert not resp.url.endswith("login.html")
|
||||
|
||||
|
||||
def test_fara_auth_login_html_duce_inapoi_la_panou(server_fara_auth):
|
||||
_, _, resp = server_fara_auth.call("/login.html")
|
||||
assert not resp.url.endswith("login.html")
|
||||
|
||||
|
||||
def test_fara_auth_se_poate_actiona_pe_serviciu(server_fara_auth, systemctl_fals):
|
||||
assert server_fara_auth.call("/api/service", {"action": "restart"})[0] == 200
|
||||
assert ("restart", api.SERVICE) in systemctl_fals.apeluri
|
||||
|
||||
|
||||
def test_valoare_necunoscuta_pentru_auth_nu_deschide_panoul(server, state_dir):
|
||||
"""Doar off/none/0/false scot login-ul; orice altceva il pastreaza."""
|
||||
(state_dir / "env").write_text(
|
||||
"DASHBOARD_TOKEN=secret-de-test\nDASHBOARD_AUTH=da\n", encoding="utf-8")
|
||||
config.reload(state_dir)
|
||||
assert not api.auth_disabled()
|
||||
assert server.call("/api/status")[0] == 401
|
||||
|
||||
|
||||
def test_identitatea_tailscale_e_doar_pentru_jurnal(server_fara_auth):
|
||||
"""Antetul pus de `tailscale serve` se raporteaza, dar nu decide accesul:
|
||||
pe localhost lipseste, si totusi cererea trece."""
|
||||
assert api.tailnet_user({"Tailscale-User-Login": " ana@example.com "}) == "ana@example.com"
|
||||
assert api.tailnet_user({}) == ""
|
||||
_, data, _ = server_fara_auth.call("/api/status")
|
||||
assert data["user"] == ""
|
||||
|
||||
Reference in New Issue
Block a user