2.8 KiB
2.8 KiB
Krok 04 - Správa používateľov a projektov (Session)
Kontext projektu
WebWizard potrebuje identifikovať používateľa (pomocou ID uloženého v prehliadači) a priradiť k nemu jeho projekty. MVP nepoužíva klasické prihlasovanie, ale user_id generované pri prvej návšteve.
Pred implementáciou si preštuduj
docs/architecture.md- Sekcia 5 (Projekt) a 8 (Identifikácia používateľa).docs/wizard.md- Sekcia 10 (Wizard Data Schema).
Cieľ
Implementovať logiku pre inicializáciu session (vytvorenie user_id) a základnú správu projektov (vytvorenie, zoznam).
Požadované zmeny
- Implementácia akcie
initSessionvajax.php:- Ak
user_idchýba, vygeneruj unikátne ID (napr.u_+ hash). - Vytvor súbor
data/users/<user_id>.json.
- Ak
- Implementácia akcie
createProjectvajax.php:- Vygeneruj unikátne
project_id. - Vytvor základnú štruktúru projektu v
data/projects/<project_id>.jsonso stavomdraft. - Pridaj
project_iddo zoznamu projektov v používateľskom JSONe.
- Vygeneruj unikátne
- Implementácia akcie
listProjectsvajax.php:- Vráti zoznam projektov pre dané
user_idso základnými metadátami (názov z identity, stav, dátum).
- Vráti zoznam projektov pre dané
- Implementácia akcie
getProjectStatusvajax.php:- Vráti kompletné dáta projektu pre dané
project_id.
- Vráti kompletné dáta projektu pre dané
Implementačné pravidlá
- Používaj
FileStorageslužbu z Kroku 02. - ID musia byť bezpečne generované.
- Overuj, či projekt patrí danému
user_idpri každej operácii s projektom.
Súbory ktoré je potrebné vytvoriť
src/Actions/ProjectActions.php(odporúčané pre logiku)
Súbory ktoré je potrebné upraviť
public/ajax.php(pridanie nových akcií)
API a dátové štruktúry
Šruktúra projektu (data/projects/<project_id>.json):
{
"project_id": "...",
"user_id": "...",
"status": "draft",
"current_step": 1,
"wizard_data": {},
"created_at": "...",
"updated_at": "..."
}
Frontend požiadavky
Nerelevantné (implementácia backend logic).
Backend požiadavky
- PHP 8.2.
Testovací scenár
- Zavolaj
initSessionbezX-User-ID. Dostaneš nové ID. - Zavolaj
createProjects novým ID. Dostanešproject_id. - Over, či vznikli súbory v
data/users/adata/projects/. - Zavolaj
listProjectsa over, či obsahuje vytvorený projekt.
Definition of Done
- Používateľské relácie a projekty sú perzistentne uložené v JSON súboroch.
- API akcie pre správu projektov sú funkčné.
Obmedzenia
- Nepoužívaj PHP natívne sessions (
session_start()), identifikácia je čiste cezuser_idv hlavičke a perzistenciu v súboroch.
Výstup
- zoznam vytvorených súborov
- zoznam upravených súborov
- stručné zhrnutie vykonaných zmien
- prípadné otvorené problémy