Správa tenantů
Administrátor systému edumeal spravuje tenanty - provozovatele školního stravování, kteří v rámci jedné instalace edumealu fungují vedle sebe a navzájem o sobě nevědí. Tato stránka popisuje funkce dostupné administrátorovi na stránce Správa systému.
Role administrátora
Administrátor má systémovou roli admin - nepatří k žádnému konkrétnímu tenantovi a může se pohybovat napříč všemi. Navigace je svislý panel po levé straně (stejně jako u operátora) rozdělený do skupin:
- Tenanti - správa provozovatelů a jejich operátorů
- Správa - Administrátoři (správa ostatních administrátorů, viz níže) a Funkce (zapínání volitelných modulů)
- Nutriční data - Párování surovin a Nutriční katalog (centrální nutriční databáze)
- Reporty - Statistika provozů (počty strávníků napříč provozy) a Statistika e-mailů (přehled odeslaných e-mailů napříč všemi provozy)
- Systém - Nastavení (vlastní zabezpečení účtu a systémová nastavení)
Vše ostatní (denní provoz, jídelníčky, strávníky, čipy, ceníky, kuchyně, finance) si v rámci svého tenanta řídí operátoři, které administrátor zakládá.
Co je tenant
Tenant reprezentuje jednoho provozovatele školního stravování - typicky:
- Město nebo obec provozující školní jídelny
- Skupina škol se společným zřizovatelem
- Samostatná školní jídelna
- Soukromý provozovatel stravovacích služeb
Mezi tenanty je v databázi tvrdá izolace - uživatelé, strávníci, výdejní místa, kuchyně, jídelní lístky i finanční data jednoho tenanta nejsou viditelné z jiného tenanta. Operátor, rodič nebo organizace vidí pouze data svého tenanta a v UI nemá indikátor, že systém slouží více organizacím najednou.
Seznam tenantů
Hlavní stránka Správa systému zobrazuje stránkovaný seznam všech tenantů. Pro každý řádek jsou vidět:
- Název - obchodní jméno provozovatele
- IČO - identifikační číslo organizace
- Reg. kód - registrační kód provozu, kterým se rodiče sami registrují (viz detail tenanta)
- Email - kontaktní e-mail
- Stav - Aktivní nebo Neaktivní (deaktivovaní tenanti jsou v seznamu zašedlí)
Kliknutím na řádek se otevře postranní panel s detailem tenanta a seznamem jeho operátorů.
Vytvoření nového tenanta
Tlačítkem Přidat tenanta v pravém horním rohu otevřete formulář.
| Pole | Popis | Povinné |
|---|---|---|
| Název společnosti | Obchodní jméno provozovatele (např. „Sodexo s.r.o.” nebo „Město Brno – školní jídelny”) | Ano |
| IČO | Identifikační číslo organizace | Ne |
| Kontaktní email | E-mail pro komunikaci s provozovatelem | Ne |
Po stisku Uložit se tenant vytvoří jako Aktivní a automaticky se mu vygeneruje registrační kód pro samoregistraci rodičů (viz Detail tenanta). Aby v něm šlo cokoli dělat, musíte přidat alespoň jednoho operátora (viz níže).
Bankovní účty: Účty pro dobíjení kreditu se nastavují v detailu tenanta (sekce Bankovní účty pro dobíjení), ne přímo ve formuláři vytvoření. Tenant jich může mít víc a jsou rovnocenné; který z nich rodič uvidí, se řídí povolením na jeho výdejním místě. Účty si může spravovat i operátor sám v Nastavení provozu - viz Bankovní účty pro dobíjení.
Detail tenanta a úprava
V detail panelu vidíte IČO, kontaktní email, stav, registrační kód a sekci Bankovní účty pro dobíjení, kde můžete účty přidávat, upravovat a mazat. Při přidávání účtu je k dispozici i volba „Povolit na všech výdejních místech” tenanta. U aktivních tenantů jsou k dispozici dvě tlačítka:
- Upravit - otevře formulář se stejnými poli jako při vytvoření.
- Deaktivovat - viz následující sekce.
Údaje na tištěných dokumentech
Formulář tenanta má sekci Údaje na tištěných dokumentech se třemi poli: sídlo, web a zápis v obchodním rejstříku. V aplikaci se nikde nezobrazují - jdou výhradně na papír:
- do hlavičky přihlášky ke stravování, kterou tiskne operátor (viz Správa strávníků a uživatelů),
- k Dodavateli na dodacím listu, kde se dosud tisklo jen jméno a IČO.
Nevyplněný údaj se nevytiskne - řádek se prostě neobjeví. U provozů založených dřív jsou tato pole prázdná, dokud je někdo nedoplní, a jejich dokumenty zatím vypadají stejně jako předtím.
Registrační kód
V detailu tenanta se zobrazuje jeho registrační kód spolu s tlačítkem Přegenerovat. Rodiče se pomocí tohoto kódu sami registrují do daného provozu (self-registrace) - místo veřejného seznamu škol zadají při registraci kód, který jim provoz předá, a tím se přiřadí ke správnému tenantovi.
Kód se vygeneruje automaticky při vytvoření tenanta; ručně se needituje. Tlačítkem Přegenerovat ho můžete vyměnit za nový - po přegenerování starý kód i odkaz okamžitě přestanou platit, takže ho použijte, pokud se kód dostal k nepovolaným osobám.
Deaktivace tenanta
Pokud provozovatel ukončí používání systému, administrátor jeho tenanta deaktivuje. Deaktivace je reverzibilní - žádná data se nemažou. Po deaktivaci:
- Uživatelé z daného tenanta se nemohou přihlásit (token-refresh selže).
- API odmítne mutující operace patřící tenantovi.
- Historické záznamy (objednávky, transakce, audit log) zůstávají uložené.
- V seznamu tenantů je řádek zašedlý a v detailu zmizí tlačítka Upravit a Deaktivovat.
Re-aktivace dnes není v UI samostatným tlačítkem - v případě potřeby kontaktujte technickou podporu.
Operátoři tenanta
V detailu tenanta najdete sekci Operátoři se seznamem všech operátorů, kteří daného tenanta spravují. U každého vidíte jméno, e-mail a stav (Aktivní / Neaktivní) plus tlačítko na přepnutí stavu.
Přidání operátora
Tlačítko Přidat operátora otevře formulář, který začíná e-mailem. Podle něj se přizpůsobí:
- E-mail už v systému existuje (např. rodič nebo operátor v jiném provozu) → formulář to pozná a jen mu přidá operátorskou roli v tomto provozu. Heslo ani jméno se nezadává a nemění - uživatel se přihlašuje svým stávajícím účtem. Jeho přístupy v ostatních provozech zůstávají nedotčené.
- Nový e-mail → doplní se jméno, příjmení a počáteční heslo (min. 8 znaků) a založí se nový účet. Ten dostane uvítací e-mail s přihlašovacími údaji.
Nový operátor je rovnou aktivní a přiřazený k tenantu, ve kterém jste ho přidali. Tentýž e-mail může být operátorem ve více provozech současně - viz poznámka o účtech napříč tenanty níže.
Aktivace a deaktivace operátora
Tlačítka Aktivovat / Deaktivovat u každého řádku přepínají přístup operátora. Deaktivovaný operátor se nemůže přihlásit a v seznamu je viditelně zašedlý.
Pozor: Pokud deaktivujete posledního aktivního operátora tenanta, denní provoz daného provozovatele se zastaví - nikdo nebude moci vytvářet jídelníčky, schvalovat rodiče, dobíjet kredity ani generovat sestavy. Před deaktivací posledního operátora se ujistěte, že máte připraveného nástupce.
Účty napříč více tenanty: Jeden účet (e-mail) může být operátorem ve více provozech zároveň, případně i administrátorem. Deaktivace vypíná celý účet, proto je u takových sdílených účtů zablokovaná - místo ní použijte Odebrat z provozu, které odebere operátorskou roli jen v tomto tenantu a přístupy v ostatních tenantech zachová. Účet se archivuje (resp. deaktivuje) teprve tehdy, když odeberete jeho poslední přístup. Stejně se chová i odebrání ze seznamu Administrátorů: u účtu, který je zároveň operátorem či rodičem, se odebere jen administrátorská role a zbylé role zůstanou.
Odebrání operátora z provozu
U každého operátora je tlačítko Odebrat z provozu. To je doporučený způsob, jak operátora z tenantu vyřadit: odebere mu operátorskou roli jen v tomto provozu. Pokud má účet přístup i jinde (jiný provoz, rodič, administrátor), zůstane mu zachován; pokud šlo o jeho poslední přístup, účet se archivuje. Na rozdíl od Smazat nejde o nevratné smazání dat - operátora lze později znovu přidat se stejným e-mailem.
Trvalé smazání operátora (GDPR čl. 17)
Vedle toho se u každého operátora zobrazuje červené tlačítko Smazat. Jde o stejný GDPR-erasure flow, který je popsaný v průvodci pro operátory, jen aplikovaný shora - admin může smazat operátora libovolného tenanta bez nutnosti tam operátorem přihlašovat.
Po potvrzení dialogu:
- Jméno, e-mail a telefon operátora se přepíšou na placeholder (
erased-<uuid>@edumeal.invalid) - operace je nevratná. - Všechny aktivní přihlašovací tokeny operátora okamžitě přestanou platit.
- Nedoručené e-maily určené tomuto operátorovi (např. pozvánka, reset hesla) se v notifikační frontě zruší.
- E-mail se uvolní pro novou registraci v jakémkoli tenantu.
- Audit log všech akcí, které operátor provedl, zůstane - referencuje jen
user_id(UUID), ne e-mail. Auditní stopa je explicitní výjimka z práva na výmaz (GDPR čl. 17(3)(b) - splnění právní povinnosti).
Použít rozumně: pro běžné „operátor odešel, ať nemá přístup” stačí Deaktivovat. Trvalé smazání pouštějte jen po doložené žádosti subjektu nebo po vypršení retenční lhůty.
Správa administrátorů
Záložka Administrátoři slouží ke správě ostatních systémových administrátorů. Administrátoři jsou bez tenantu - mají přístup napříč všemi provozovateli, takže se nezakládají v detailu konkrétního tenanta jako operátoři, ale tady samostatně.
Stránka zobrazuje stránkovaný seznam všech administrátorů; u každého vidíte jméno, e-mail a stav (Aktivní / Neaktivní). Váš vlastní účet je v seznamu označený „(vy)“.
Přidání administrátora
Tlačítko Přidat administrátora otevře formulář:
| Pole | Popis | Povinné |
|---|---|---|
| Jméno | Křestní jméno administrátora | Ano |
| Příjmení | Příjmení administrátora | Ano |
| Přihlašovací e-mail - musí být unikátní v rámci celého systému | Ano | |
| Heslo | Počáteční heslo (minimálně 8 znaků). Administrátor si ho po prvním přihlášení změní v profilu. | Ano |
Nový administrátor je rovnou aktivní, není přiřazený k žádnému tenantovi a přihlašovací údaje mu pošleme e-mailem. Po přihlášení má stejná oprávnění jako vy.
Aktivace a deaktivace administrátora
Kliknutím na řádek otevřete detail s tlačítkem Aktivovat / Deaktivovat. Deaktivovaný administrátor se nemůže přihlásit a v seznamu je zašedlý.
Vlastní účet nelze deaktivovat. U svého řádku tlačítko Deaktivovat nenajdete - je to pojistka, aby systém nezůstal bez aktivního administrátora. Pokud potřebujete sebe odebrat, ať vás deaktivuje jiný administrátor.
Zabezpečení administrátora
V detailu administrátora se pod sekcí Zabezpečení zobrazuje stav jeho dvoustupňového ověření (MFA) - zda má nastavený autentikátor (a od kdy), počet zbývajících záložních kódů a počet registrovaných přístupových klíčů (passkeys). Pokud ověření nastavené nemá, je označené jako Nenastaveno.
K dispozici jsou dvě akce:
- Resetovat heslo - odešle administrátorovi e-mail s odkazem pro obnovu hesla. Heslo mu tedy nezadáváte ručně; nastaví si ho sám přes odkaz.
- Resetovat MFA - smaže jeho ověřovací prvky (autentikátor, passkeys i záložní kódy). Při příštím přihlášení si MFA nastaví znovu. Použijte, když administrátor ztratí přístup ke všem svým ověřovacím prvkům. Tlačítko je nedostupné u účtu, který zatím žádné MFA nastavené nemá.
Nastavení generování náhledů fotografií
V administraci na záložce Nastavení je sekce Náhledy fotografií jídel, kterou řídíte worker generující zmenšené náhledy fotografií na pozadí:
- Generovat náhledy na pozadí - hlavní vypínač. Když je vypnutý, náhledy se negenerují (v jídelníčku se použije originál).
- Počet workerů na instanci - prázdné = jeden worker celkově (běží na jedné instanci; bezpečné, paměťově nenáročné, výchozí). Vyplněné číslo N = N workerů na každé instanci (vyšší průchodnost, ale vyšší nároky na paměť).
Změna se projeví do několika sekund bez restartu. Výchozí (prázdné) doporučujeme ponechat, pokud nemáte konkrétní důvod generování zrychlit.
Odeslání testovacího e-mailu
V administraci na záložce Nastavení je sekce Test e-mailu, kterou ověříte, že doručování e-mailů funguje. Zadejte cílovou e-mailovou adresu a stiskněte Odeslat testovací e-mail - na zadanou adresu dorazí krátká zkušební zpráva.
Hodí se po nasazení nebo změně konfigurace odesílání e-mailů (SMTP, směrování), kdy potřebujete ověřit doručování cíleně a okamžitě, místo abyste čekali na skutečnou provozní notifikaci. Zkušební e-mail se nikam neukládá a neváže se k žádnému tenantovi.
Multi-tenancy v praxi
Systém edumeal je navržen tak, aby jedna instalace obsluhovala libovolný počet tenantů. Co každý tenant „má své”:
- Uživatele a strávníky - rodiče i strávníci jednoho tenanta nevidí účty z jiného.
- Výdejní místa a kuchyně - organizační struktura je specifická pro tenant.
- Jídelní lístky a recepty - každý tenant si je spravuje samostatně.
- Ceníky - ceny obědů se nastavují per tenant + výdejní místo + věková kategorie.
- Kreditní účty a transakce - finance jsou izolované.
- Audit log - záznamy o přihlášeních, dobitích a operátorských akcích jsou taggované tenantem.
Administrátor vidí všechny tenanty a může mezi nimi přepínat. Operátoři, rodiče i strávníci vidí pouze data svého tenanta.
Bezpečnost
Administrátorská role je systémově nejprivilegovanější - má přístup ke všem tenantům a všem operátorům. Doporučení pro provoz:
- Přihlašujte se silným heslem; přístupový token žije v paměti prohlížeče, refresh token v
HttpOnlycookie se zámkemSameSite=Strict. - Citlivé akce (přihlášení, vytvoření tenanta, dobití kreditu, objednávky) jsou logované do auditní tabulky se zdrojovou IP a user-agentem.
- Pravidelně procházejte seznam tenantů a aktivních operátorů - jednoho aktivního operátora by měl mít každý produkční tenant, víc na záskoky.
Časté otázky
Kolik tenantů systém zvládne?
Architektura počítá s desítkami až stovkami tenantů na jedné instalaci. Datová izolace je zajištěna na úrovni SQL (tenant_id filtr v každém repository dotazu) - výkon jednoho tenanta nemá vliv na ostatní.
Můžu přenést data mezi tenanty?
Aktuálně to není v UI - data jsou pevně vázána na konkrétního tenanta. Pokud potřebujete fúzi nebo přesun, kontaktujte technickou podporu.
Jak se admin liší od operátora?
Admin spravuje strukturu - tenanty a jejich operátory. Operátor spravuje provoz - v rámci svého tenanta dělá vše ostatní (strávníci, jídelníčky, objednávky, ceníky, kuchyně, finance). Admin nemá v UI provozní obrazovky - pokud potřebuje vidět konkrétní jídelníček nebo strávníka, musí to dělat skrz operátora daného tenanta.