Skip to main content

Mobile F1+F4 fix — tokeni van Zustand + demo-login prod gate (MC #900173)

Mobile F1+F4 fix — tokeni van Zustand + demo-login prod gate (MC #900173)

Izvor: Securion retroaktivni mobile audit (MC #900156, ~/system/evidence/900156/securion-mobile-audit-2026-08-23.md), verdikt PASS-UZ-POPRAVKE. Blokira sljedeću mobile distribuciju (#900152 Faza 3).

Nalaz F1 (KRITIČAN — blokira distribuciju)

apps/mobile/src/store/authStore.ts drži accessToken + refreshToken u Zustand AuthState; client.ts čita useAuthStore.getState().accessToken; 3 ekrana čitaju token hookom. PRD §13 + Impl-spec §1.3/Slice A izričito: "no code path stores tokens in AsyncStorage or Zustand", "tokens live in Keychain only". Store NIJE persist() — token ne ide na disk, ali je globalno čitljiv (DevTools/crash-reporting/memory-dump površina).

Fix: ukloniti oba tokena iz AuthState i svih set() poziva; module-level tokenService (uzor: apps/web/lib/api.ts _accessToken) ili sinhroni getter nad SecureStore; client.ts poziva getter.

Nalaz F4 (SREDNJI)

app/(auth)/login.tsx renderuje "Pogledaj demo" (startDemoSignIn/auth/demo) bez env/build-profile provjere — isti kod u production EAS profilu.

Fix: env-gate (EXPO_PUBLIC_APP_ENV) demo dugmeta van production profila.

Acceptance

  • accessToken|refreshToken u authStore.ts tipu = 0 pogodaka (grep)
  • Testovi za tokenService + 401→refresh→retry lanac (danas 0 testova za auth lanac)
  • Negativni kanarinac: vraćanje tokena u store obara test (oba smjera)
  • Demo dugme odsutno u production buildu (test ili build-profile dokaz)
  • gate_mobile (PR #389) zelen na PR-u
  • Nezavisna peer verifikacija (auth = risky path)

AFTER — isporučeno 2026-08-23 ~21:10 CEST

Main 94caa803 (PR 391, merge 3ac29dbf). Lanac: plan (paul-hudson) → pi izvršenje PASS → John verify → parisa CONFIRMED-UZ-NAPOMENE → gate_mobile IZVRŠEN+succeeded (build 1287 timeline). Acceptance: AC1 grep=0 ✓, AC2 testovi (5 fajlova/24) ✓, AC3 gate_mobile na PR-u ✓, AC4 kanarinac oba smjera ✓, AC5 demo-gate production ✓, AC6 nezavisna verifikacija ✓. Evidence: ~/system/evidence/900173/.