Skip to content

Zákazníci a skupiny

Stav k 2026-06-21

Tabulka uzivatele

Jedna tabulka pro zákazníky i admin uživatele. Rozlišení je přes uzivatele_skupiny.admin.

Klíčová pole

Pole Typ Popis
id int primární klíč
uzivatel varchar(100) unikátní login (e-mail)
heslo varchar(32) MD5 hash hesla
uzivatel_md5 varchar(32) druhý hash pro HMAC challenge přihlášení
skupina_id int FK → uzivatele_skupiny.id (práva, admin flag)
status enum REG = čeká na aktivaci, AKT = aktivní, ZAB = zakázaný
zeme varchar fakturační adresa — země
zeme_dod varchar doručovací adresa — země (priorita při EUR logice)
sk tinyint(1) pravděpodobně příznak SK zákazníka (nepoužívá se aktivně)

GDPR a marketing

Pole Popis
souhlas_novinky souhlas se zasíláním newsletteru (1/0)
gdpr_souhlas_newsletter timestamp udělení souhlasu
gdpr_souhlas_telefon timestamp souhlasu s telefonním kontaktem
gdpr_souhlas_narozeniny timestamp souhlasu s narozeninovými e-maily
gdpr_16let datum potvrzení věku 16+
neobjednal_5let příznak zákazníků bez objednávky 5+ let (nastavuje cron)
narozeni datum narození — pro narozeninové e-maily

Cron zakaznici-co-5let-neobjednali.php označuje zákazníky s neobjednal_5let=1 a posílá notifikaci před výmazem (GDPR).

Adresy

Zákazník má dvě sady adresních polí: fakturační (jmeno, prijmeni, adresa, mesto, …) a doručovací (jmeno_dod, prijmeni_dod, adresa_dod, …). Při přihlášení se doručovací země nastaví do session a ovlivňuje EUR logiku i DPH sazbu.


Skupiny (uzivatele_skupiny)

Skupiny řídí přístupová práva, nikoli cenové skupiny.

Pole Popis
skupina název skupiny
admin 1 = přístup do ADMIN panelu, 0 = frontend zákazník
uroven číselná úroveň oprávnění

Existující skupiny

id skupina admin uroven
1 ADMIN / SUPERADMIN 1 99
2 ADMIN / ADMIN 1 95
9 ADMIN / EDITACE PRODUKTŮ 1 91
8 ADMIN / POBOČKY (vouchery+objednávky) 1 90
6 ADMIN / WEBMASTER 1 94
7 ADMIN / PREKLAD 1 50
15 Stránky 1 35
11 Roman L 0 92
5 E-SHOP 0 1

Skupina id=5 (E-SHOP) je výchozí skupina pro všechny zákazníky.

Skupina id=11 (Roman L) má admin=0 — nemá přístup do administrace — ale vysoký uroven=92. Jde pravděpodobně o historický záznam nebo speciální frontend oprávnění.

Konkrétní oprávnění skupiny jsou v uzivatele_skupiny_prava (M:N na uzivatele_prava). Každé právo odpovídá PAGE klíči v adminu (uzivatele, produkty, apod.).


Přihlášení a session

lib/inc.loginLogout.php + lib/function.user.php

Tok: 1. POST → user_info($username) načte uživatele + jeho práva 2. Ověření hesla: HMAC challenge nebo prostý MD5 (starší klienti) 3. Do session: logged (uroven), username, user_id 4. Frontend: nastaví setCurrencyEur() podle zeme_doruceni

Po každém requestu (pokud je session username) se volá user_info() znovu — žádné cachování v session.


Dopad na migraci do Sylius

Rozdělení uzivatele na dvě entity

Tabulka uzivatele míchá zákazníky e-shopu a admin uživatele do jedné entity. Sylius je striktně odděluje na ShopUser a AdminUser. Migrace musí záznamy rozdělit podle uzivatele_skupiny.admin — sdílená pole (heslo, email) se migrují odděleně pro každý typ.

Hesla — MD5

Všechna hesla jsou uložena jako MD5 hash (32 znaků). Sylius používá bcrypt/sodium. Hesla nelze převést — při prvním přihlášení je nutný rehash, nebo hromadný reset.

Admin skupiny → Symfony role

7 admin skupin s granulárními právy (per-PAGE klíče v uzivatele_prava) nemá přímý ekvivalent v Sylius. Nutno namapovat na Symfony role nebo použít plugin pro správu oprávnění.

GDPR a marketing — Sylius neřeší

souhlas_novinky, gdpr_souhlas_newsletter, gdpr_souhlas_telefon, gdpr_souhlas_narozeniny, narozeni — Sylius nemá nativní podporu pro marketingové souhlasy ani narozeninové kampaně. Nutno řešit vlastní implementací nebo externím nástrojem (Mailchimp, Klaviyo apod.). Záznamy souhlasů musí být zachovány kvůli GDPR.