Panoul nu mai intră sub regulile magazinului
Două reguli ale magazinului se aplicau și panoului, unde n-au ce căuta.
Redirectul de limbă (#67 (closed))
Un vizitator care a ales cândva rusa sau engleza e trimis de la adresa fără
prefix la cea prefixată. Pe /admin asta e o capcană: /en/admin răspunde 404
înadins — panoul e doar în română și stă în spatele unui login — iar învelișul
servit de acel 404 pornește aplicația din nou pe o adresă fără prefix, deci
regula se declanșează încă o dată.
Verificat pe viu, în browserul lui Vitalie, pe hyperice.vevdev.com:
localStorage['hyperice.lang'] era "en", history.length ajunsese la 50 —
plafonul browserului — iar #root conținea doar
<div class="min-h-screen" aria-hidden="true"></div>, starea de așteptare goală.
De aceea ecranul era alb: bucata paginii de login nu apuca niciodată să se
încarce. Ștergerea cheii a reparat instantaneu, ceea ce confirmă lanțul.
Regula s-a mutat lângă restul logicii de adrese, ca storedLanguageRedirect,
unde un test o poate ține. Comportamentul magazinului rămâne neschimbat: cine a
ales engleza și deschide / ajunge în continuare pe /en.
Bannerul de cookie-uri (#68 (closed))
Se randa lângă rute, deci nicio rută nu-l oprea. Panoul nu încarcă niciun script
de analiză și n-are ce întreba, iar singurul cookie pe care îl folosește —
hyperice_admin_session — e strict necesar și nu intră sub consimțământ.
Ambele întreabă acum același lucru, într-un singur loc: isAdminPath.
Verificare rulată
npm run lint, npm run build, npx vitest run în frontend/: 39 de fișiere,
486 de teste, toate trec. Singura avertizare de lint e cea preexistentă de la
src/App.tsx.
Testele mușcă, verificat prin mutație:
- scot excepția din
storedLanguageRedirect→expected '/ru/admin' to be null; - scot condiția din
App.tsx→expected <div role="region" …> to be null.
Closes #67 (closed) Closes #68 (closed)