refactor users module to domain/controller and release 0.253 update package

This commit is contained in:
2026-02-12 21:44:40 +01:00
parent f5054047fd
commit c1284ef06c
24 changed files with 1452 additions and 453 deletions

View File

@@ -250,6 +250,16 @@ grep -r "Product::getQuantity" .
- Legacy cleanup: usunięto `autoload/admin/controls/class.Filemanager.php` i `autoload/admin/view/class.FileManager.php`
- Aktualizacja: ver. 0.252
- **Users** (migracja kontrolera i repozytorium)
- ✅ UserRepository - **ZMIGROWANE** (2026-02-12) 🎉
- Nowa klasa: `Domain\User\UserRepository` (find, getById, save, delete, checkLogin, logon, details, updateById, sendTwofaCode, verifyTwofaCode)
- Nowy kontroler: `admin\Controllers\UsersController` (DI, instancyjny: view_list, user_edit, user_save, user_delete, login_form, twofa)
- Router: `admin\Site` - factory wpis dla modulu `Users`
- Fasada: `admin\factory\Users` deleguje do repozytorium (backward compatibility dla login/2FA flow)
- AJAX: `admin/ajax/users.php` - `check_login` oparty o `UserRepository`
- Legacy cleanup: usuniety `autoload/admin/controls/class.Users.php`
- Testy: 25 testow repozytorium (CRUD, logon, 2FA, checkLogin) + 12 testow kontrolera (kontrakty + normalizeUser)
### 📋 Do zrobienia
- Order
- Category
@@ -275,16 +285,18 @@ tests/
│ │ ├── Cache/CacheRepositoryTest.php
│ │ ├── Dictionaries/DictionariesRepositoryTest.php
│ │ ├── Product/ProductRepositoryTest.php
│ │ ── Settings/SettingsRepositoryTest.php
│ │ ── Settings/SettingsRepositoryTest.php
│ │ └── User/UserRepositoryTest.php
│ └── admin/
│ └── Controllers/
│ ├── ArticlesControllerTest.php
│ ├── DictionariesControllerTest.php
│ ├── ProductArchiveControllerTest.php
── SettingsControllerTest.php
── SettingsControllerTest.php
│ └── UsersControllerTest.php
└── Integration/
```
**Łącznie: 82 testów, 181 asercji**
**Łącznie: 119 testów, 256 asercji**
### Przykład testu
```php
@@ -368,10 +380,11 @@ vendor/bin/phpstan analyse autoload/Domain
5. **Dictionaries** ✅ (repo + kontroler + form/table, ver. 0.251)
6. **ProductArchive** ✅ (migracja kontrolera + cleanup szablonów, ver. 0.252)
7. **Filemanager** ✅ (migracja routingu + fix `Invalid Key`, ver. 0.252)
8. **Order**
9. **Category**
10. **ShopAttribute**
11. **Pages** (`browse_list` i powiązane widoki nadal legacy)
8. **Users** ✅ (repo + kontroler + 2FA + legacy cleanup, ver. 0.253)
9. **Order**
10. **Category**
11. **ShopAttribute**
12. **Pages** (`browse_list` i powiązane widoki nadal legacy)
- **Form Edit System** - Nowy uniwersalny system formularzy edycji
- ✅ Klasy ViewModel: `FormFieldType`, `FormField`, `FormTab`, `FormAction`, `FormEditViewModel`
@@ -386,7 +399,7 @@ vendor/bin/phpstan analyse autoload/Domain
---
*Rozpoczęto: 2025-02-05*
*Ostatnia aktualizacja: 2026-02-10*
*Ostatnia aktualizacja: 2026-02-12*
## Form Edit System - Dokumentacja użycia
@@ -544,3 +557,20 @@ Gdy `persist = true`:
3. **Szablon** - usuń stary szablon lub zostaw jako fallback
4. **Testy** - zaktualizuj testy jeśli zmienił się format danych
## Aktualizacja 2026-02-12 - Users
### Users (migracja kontrolera i repozytorium)
- **NOWE:** `Domain\User\UserRepository` (delete, find, save, checkLogin, logon, details, sendTwofaCode, verifyTwofaCode)
- **NOWE:** `admin\Controllers\UsersController` (view_list, user_edit, user_save, user_delete)
- **UPDATE:** Router `admin\Site` - nowy kontroler DI dla modu<64>u `Users`
- **UPDATE:** `admin\factory\Users` jako fasada delegujaca do repozytorium
- **UPDATE:** `admin/ajax/users.php` - endpoint `check_login` oparty o `UserRepository`
- Testy po zmianie: 95 tests, 204 assertions
- **UPDATE:** UsersController: `view_list` + `user_edit` migrowane na nowy system list/form (table-list + form-edit)
## Aktualizacja 2026-02-12 (finalizacja Users)
- Users: pelna migracja na nowa architekture (Domain + DI Controller), bez fallbacku do legacy kontrolera/factory/view.
- `UsersController` obsluguje: `list/view_list`, `user_edit`, `user_save`, `user_delete`, `login_form`, `twofa`.
- Dodano walidacje warunkowa: `twofa_email` wymagany gdy `twofa_enabled = 1`.
- Widoki users migrowane z `grid/gridEdit` na `table-list` i `form-edit`.