c1203
tipspec
statusSPEC — nije implementirano
naeloTest dolazi nakon granice, ne umjesto nje.
granica{
"pravilo": "Soba je offline-sigurna ako i samo ako sve njene operacije mogu raditi s weise3_id kao jedinom identifikacijom — bez user_id, bez DB lookupa po user_id, bez CompanyMember provjere po user_id.",
"dependency": "Offline-sigurna soba koristi get_current_user_tprg. Soba koja zahtijeva user_id koristi get_current_user (online, JWT).",
"nije_pregovaracka_stavka": "user_id=None smije doći samo u sobu koja je eksplicitno označena offline-sigurnom. Svaka druga soba mora odbaciti TPRG t
offline_sigurne_sobe[
{
"soba": "POST /api/v4/tprg/verify",
"razlog": "Javna, offline po dizajnu — verificira token bez baze i mreže.",
"status": "LIVE"
},
{
"soba": "GET /api/v4/tprg/qr/{qr_payload}",
"razlog": "Javna, samo generira QR PNG — nema identiteta.",
"status": "LIVE"
},
{
"soba": "ALIBI /capture (budući endpoint)",
"razlog": "Hvatanje dokaznog atoma — weise3_id dovoljan, user_id nije potreban. Atom se veže na weise3_id, ne na interni UUID.",
"status": "FUTURE
NIJE_offline_sigurno[
{
"soba": "vault/*",
"razlog": "FenixVaultKey.user_id == user.user_id — None u WHERE = katastrofa."
},
{
"soba": "invoicing/*",
"razlog": "CompanyMember.user_id lookup — None ne odgovara nijednom članu."
},
{
"soba": "komitenti/*",
"razlog": "Isti razlog kao invoicing."
},
{
"soba": "devices/*",
"razlog": "_get_device_or_403 prima user_id kao UUID — None pada."
},
{
"soba": "kanal/* (većina)",
"razlog": "Poruke se vežu na user_id u bazi
mehanizam_odbijanja{
"sto": "Soba koja nije offline-sigurna mora provjeriti user_id na ulasku.",
"kako": "if user.user_id is None: raise HTTPException(403, 'Ova soba zahtijeva online autentikaciju.')",
"gdje": "Na JEDNOM centralnom mjestu — require_online() dependency, ne u svakoj sobi zasebno.",
"kod": "async def require_online(user: AuthenticatedUser = Depends(get_current_user)) -> AuthenticatedUser:\n if user.user_id is None:\n raise HTTPException(403, 'Soba nije offline-sigurna. Potrebna onli
redoslijed_implementacije[
"1. Dodati require_online() u core/middleware.py (jedan dependency, ZAKON 11)",
"2. Sve sobe koje koriste user.user_id mijenjaju Depends(get_current_user) → Depends(require_online)",
"3. ALIBI soba pri nastanku: Depends(get_current_user_tprg) — prva prava offline-sigurna mutacija",
"4. Test: TPRG token na offline-sigurnoj sobi prolazi; na require_online sobi dobiva 403"
]
napomenaDanas nema aktivnog kvara jer get_current_user_tprg nije ožičen ni na jedan od rizičnih routera. Latentni rizik, ne aktivan. Granica se definira sada, implementira uz ALIBI (Pčela 2).