tipulaz_implementacija
statusDOKAZANO
verzija1.0
sto_je_napravljeno{
"fajl": "/var/www/fenix-v4/core/middleware.py",
"bak": "/var/www/fenix-v4/core/middleware.py.bak_korak5a",
"server": "MAR (212.227.181.201)",
"promjene": [
"Dodan require_online() Depends — jedino centralno mjesto za granicu offline/online",
"Ispravljen trust=70 -> trust=60 u get_current_user_tprg (magic_link razina)"
]
}
require_online_spec{
"ulaz": "AuthenticatedUser (bilo koji put: JWT, POS, TPRG)",
"logika": "if user.user_id is None: raise HTTPException(403)",
"izlaz_ok": "AuthenticatedUser s garantiranim user_id (nije None)",
"izlaz_fail": "403 Forbidden — identitet je valjan, soba nije offline-sigurna",
"zasto_403_ne_401": "401 = neautenticiran. 403 = autenticiran ali nedovoljno. TPRG je autenticiran — samo offline.",
"lokacija": "core/middleware.py linija 120",
"log_event": "require_online_rejected (warning, bi
trust_korekcija{
"staro": "trust=70 (TPRG, get_current_user_tprg)",
"novo": "trust=60",
"razlog": "magic_link razina — offline, bez baze, kriptografski vezan HMAC. Ne smije biti iznad 60 bez baze.",
"tablica": {
"WebAuthn": 100,
"Genesis_online": 90,
"fina_cert": 80,
"TPRG_offline": 60,
"magic_link": 60
}
}
dokaz{
"test_offline": "AuthenticatedUser(user_id=None, trust=60) -> HTTPException 403 OK",
"test_online": "AuthenticatedUser(user_id=UUID(...), trust=90) -> prolazi, user_id garantiran",
"import_test": "from core.middleware import require_online, get_current_user_tprg, AuthenticatedUser -> import ok",
"servis": "gunicorn-fenix-v4 restart -> active"
}
sljedeci_korak{
"naziv": "ULAZ Korak 5b",
"opis": "Udruziti require_online() na sve rute koje direktno pristupaju user.user_id",
"moduli": [
"vault",
"invoicing",
"komitenti",
"companies",
"archive",
"ai_knjizenje",
"devices",
"accounts",
"capture"
],
"uvjet_za_start": "Korak 5a dokazan — DA. Korak 5b slobodan."
}
zakon[
"ZAKON 8",
"ZAKON 11",
"ULAZ spec c1203"
]
chain_prevc1203_offline_sigurne_sobe_spec.dok.json