Prepinac firmy plati pro cely portal, ne jen pro prehled
Prepinac byl stav uvnitr stranky Prehled, takze prepnuti na LogiTrans zmenilo prehled a nic jineho - ostatni stranky volaly API bez tenantId a server sahnul po vychozi firme. V Lidech tak zustali lide Automie. - vybrana firma je jedna hodnota pro cely dashboard (web/src/lib/tenant.ts) a prezije obnoveni stranky - tenantId doplnuje apiFetch, ne jednotlive stranky. Kdyz si to mela pridavat kazda stranka sama, vetsina na to zapomnela - a prave to byla ta chyba. Nedoplnuje se, kdyz cesta uz firmu nese, u scope=all a mimo /api/dashboard. - useApiQuery se pri prepnuti zepta znovu, jinak by na strance zustala cisla predchozi firmy - prepinac je v hlavicce nad obsahem a nahradil text, ktery ukazoval natvrdo prvni firmu ze seznamu bez ohledu na vyber - ulozena firma, do ktere uzivatel uz nepatri, spadne na vychozi Zjisteno u toho a zapsane do 07-firmy-a-prava.md: prava se scitaji pres vsechny firmy, neprepocitavaji se podle vybrane. Data se tim neprolomi, server je filtruje dal, ale tlacitka ukazuji vic, nez by mela. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
a771834e57
commit
2329ccbdc1
@@ -45,6 +45,30 @@ Posilaji se jako query: `?scope=tenant&tenantId=tnt_automia`.
|
||||
U `tenant` a `mine` je potreba vedet **kterou** firmu, protoze uzivatel jich
|
||||
muze mit vic. Bez `tenantId` se pouzije prvni.
|
||||
|
||||
## Prepinac firmy je nad celym portalem
|
||||
|
||||
Vybrana firma je **jedna hodnota pro cely dashboard** (`web/src/lib/tenant.ts`),
|
||||
ne stav jedne stranky. Prepinac je v hlavicce nad obsahem a `apiFetch` doplnuje
|
||||
`tenantId` do kazdeho dotazu na `/api/dashboard`.
|
||||
|
||||
Doplnuje se to v API vrstve schvalne, ne na strankach. Kdyz si to mela pridavat
|
||||
kazda stranka sama, vetsina na to zapomnela a server sahnul po vychozi firme -
|
||||
uzivatel se prepnul na LogiTrans a v Lidech koukal na lidi Automie. To neni
|
||||
nepohodli, to jsou cizi data pod hlavickou jine firmy.
|
||||
|
||||
Vyjimky, kdy se nedoplnuje:
|
||||
|
||||
| Kdy | Proc |
|
||||
| --------------------------- | -------------------------------------------------------- |
|
||||
| Cesta uz `tenantId` nese | proklik z widgetu na konkretni firmu ma prednost |
|
||||
| `scope=all` | pohled pres vsechny firmy, jedna firma tam nic neznamena |
|
||||
| Neni vybrano | server pouzije vychozi firmu uctu |
|
||||
| Cesta mimo `/api/dashboard` | prihlaseni a verejny web s firmou nepracuji |
|
||||
|
||||
Volba prezije obnoveni stranky (localStorage). Kdyz ulozena firma uz mezi
|
||||
`access.tenants` neni - clovek z ni odesel, prihlasil se nekdo jiny na tomtez
|
||||
pocitaci - spadne se na vychozi firmu uctu, aby kazdy dotaz nekoncil na 403.
|
||||
|
||||
## Server je autorita
|
||||
|
||||
Vsechno rozhoduje `src/data/access.ts`, jedno misto pro cely portal. Kdyby se to
|
||||
@@ -125,6 +149,13 @@ podle toho, ktera firma je prave zvolena.
|
||||
|
||||
## Co chybi
|
||||
|
||||
**Prava se scitaji pres vsechny firmy, neprepocitavaji se podle vybrane.**
|
||||
`permissionsOf(user)` vezme role ze vsech clenstvi dohromady. Kdo je spravce
|
||||
v jedne firme a resitel v druhe, ma prava spravce i po prepnuti do te druhe.
|
||||
Data se tim neprolomi - server je porad filtruje podle firmy - ale tlacitka
|
||||
ukazuji vic, nez by mela. Napravit to znamena predat firmu do `permissionsOf`
|
||||
a prepocitat cache za dvojici uzivatel a firma.
|
||||
|
||||
| Chybi | Poznamka |
|
||||
| ------------------------- | ------------------------------------------------ |
|
||||
| Sprava clenstvi z portalu | memberships jdou zmenit jen v kodu |
|
||||
|
||||
@@ -2,6 +2,37 @@
|
||||
|
||||
Nejnovejsi nahore.
|
||||
|
||||
## 2026-08-26 - prepinac firmy plati pro cely portal
|
||||
|
||||
Prepinac byl stav uvnitr stranky Prehled. Prepnuti na LogiTrans zmenilo prehled
|
||||
a nic jineho: ostatni stranky volaly API bez `tenantId` a server sahnul po
|
||||
vychozi firme, takze v Lidech zustali lide Automie. To neni nepohodli, to jsou
|
||||
cizi data pod hlavickou jine firmy.
|
||||
|
||||
### Zmeneno
|
||||
|
||||
- **Vybrana firma je jedna hodnota pro cely dashboard**
|
||||
(`web/src/lib/tenant.ts`), ne stav stranky. Prezije obnoveni stranky.
|
||||
- **`tenantId` doplnuje `apiFetch`**, ne jednotlive stranky. Kdyz si to mela
|
||||
pridavat kazda stranka sama, vetsina na to zapomnela - a zapomnetlivost byla
|
||||
prave ta chyba. Nedoplnuje se, kdyz cesta uz firmu nese (proklik z widgetu),
|
||||
u `scope=all` a mimo `/api/dashboard`.
|
||||
- **`useApiQuery` se pri prepnuti zepta znovu.** Bez toho by na strance zustala
|
||||
cisla predchozi firmy, dokud by ji nekdo neobnovil.
|
||||
- **Prepinac je v hlavicce nad obsahem.** Driv byl v Prehledu, ted plati
|
||||
viditelne pro vsechno. Nahradil i text, ktery ukazoval natvrdo prvni firmu
|
||||
ze seznamu bez ohledu na to, co bylo vybrane.
|
||||
- **Ulozena firma, do ktere uzivatel uz nepatri, spadne na vychozi.** Jinak by
|
||||
po odchodu z firmy koncil kazdy dotaz na 403.
|
||||
|
||||
### Zjisteno u toho
|
||||
|
||||
- **Prava se scitaji pres vsechny firmy**, neprepocitavaji se podle vybrane.
|
||||
Kdo je spravce v jedne firme a resitel v druhe, ma po prepnuti porad prava
|
||||
spravce. Data se tim neprolomi, server je filtruje dal podle firmy, ale
|
||||
tlacitka ukazuji vic, nez by mela. Zapsane v
|
||||
[07-firmy-a-prava.md](07-firmy-a-prava.md), sekce Co chybi.
|
||||
|
||||
## 2026-08-26 - helpdesk: pozadavek, ktery vidi zadavatel i resitel
|
||||
|
||||
Zakaznik nemel jak poslat pozadavek. Ticket pritom patri jedne firme, kdezto
|
||||
|
||||
Reference in New Issue
Block a user