diff options
| author | Greg Roach <greg@subaqua.co.uk> | 2022-02-22 11:28:26 +0000 |
|---|---|---|
| committer | Greg Roach <greg@subaqua.co.uk> | 2022-02-23 10:22:28 +0000 |
| commit | b55cbc6b43247e8b2ad14af6f6d24dc6747195ff (patch) | |
| tree | 7c48ed3c99e4c7887dee5e923035c862fdff92cd /app/Http/RequestHandlers | |
| parent | 709c7e1a4da00208ea2ab538eb0a1f2d46f63629 (diff) | |
| download | webtrees-b55cbc6b43247e8b2ad14af6f6d24dc6747195ff.tar.gz webtrees-b55cbc6b43247e8b2ad14af6f6d24dc6747195ff.tar.bz2 webtrees-b55cbc6b43247e8b2ad14af6f6d24dc6747195ff.zip | |
Update and use Validation class
Diffstat (limited to 'app/Http/RequestHandlers')
198 files changed, 599 insertions, 1217 deletions
diff --git a/app/Http/RequestHandlers/AbstractTomSelectHandler.php b/app/Http/RequestHandlers/AbstractTomSelectHandler.php index 7411ef7e54..e37cfbd25f 100644 --- a/app/Http/RequestHandlers/AbstractTomSelectHandler.php +++ b/app/Http/RequestHandlers/AbstractTomSelectHandler.php @@ -26,9 +26,7 @@ use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function response; -use function strlen; /** * Autocomplete for TomSelect based controls. @@ -45,12 +43,11 @@ abstract class AbstractTomSelectHandler implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); - $at = Validator::queryParams($request)->requiredString('at'); - $page = Validator::queryParams($request)->integer('page') ?? 1; - $query = Validator::queryParams($request)->requiredString('query'); + $at = Validator::queryParams($request)->string('at'); + $page = Validator::queryParams($request)->optionalInteger('page') ?? 1; + $query = Validator::queryParams($request)->string('query'); // Fetch one more row than we need, so we can know if more rows exist. $offset = ($page - 1) * self::RESULTS_PER_PAGE; diff --git a/app/Http/RequestHandlers/AccountDelete.php b/app/Http/RequestHandlers/AccountDelete.php index b0b906db35..1fe1012abc 100644 --- a/app/Http/RequestHandlers/AccountDelete.php +++ b/app/Http/RequestHandlers/AccountDelete.php @@ -24,6 +24,7 @@ use Fisharebest\Webtrees\Contracts\UserInterface; use Fisharebest\Webtrees\Services\UserService; use Fisharebest\Webtrees\Tree; use Fisharebest\Webtrees\User; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -55,8 +56,8 @@ class AccountDelete implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - $user = $request->getAttribute('user'); + $tree = Validator::attributes($request)->treeOptional(); + $user = Validator::attributes($request)->user(); // An administrator can only be deleted by another administrator if ($user instanceof User && $user->getPreference(UserInterface::PREF_IS_ADMINISTRATOR) !== '1') { diff --git a/app/Http/RequestHandlers/AccountEdit.php b/app/Http/RequestHandlers/AccountEdit.php index ae14453eaf..88122d06ee 100644 --- a/app/Http/RequestHandlers/AccountEdit.php +++ b/app/Http/RequestHandlers/AccountEdit.php @@ -29,7 +29,7 @@ use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\MessageService; use Fisharebest\Webtrees\Services\ModuleService; use Fisharebest\Webtrees\Tree; -use Fisharebest\Webtrees\User; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -66,10 +66,8 @@ class AccountEdit implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - - $user = $request->getAttribute('user'); - assert($user instanceof User); + $tree = Validator::attributes($request)->treeOptional(); + $user = Validator::attributes($request)->user(); if ($tree instanceof Tree) { $my_individual_record = Registry::individualFactory()->make($tree->getUserPreference(Auth::user(), UserInterface::PREF_TREE_ACCOUNT_XREF), $tree); diff --git a/app/Http/RequestHandlers/AccountUpdate.php b/app/Http/RequestHandlers/AccountUpdate.php index 19f6f0dae3..14abcf100b 100644 --- a/app/Http/RequestHandlers/AccountUpdate.php +++ b/app/Http/RequestHandlers/AccountUpdate.php @@ -26,6 +26,7 @@ use Fisharebest\Webtrees\Services\UserService; use Fisharebest\Webtrees\Session; use Fisharebest\Webtrees\Tree; use Fisharebest\Webtrees\User; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -57,9 +58,9 @@ class AccountUpdate implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); + $tree = Validator::attributes($request)->treeOptional(); + $user = Validator::attributes($request)->user(); - $user = $request->getAttribute('user'); assert($user instanceof User); $params = (array) $request->getParsedBody(); diff --git a/app/Http/RequestHandlers/AddChildToFamilyAction.php b/app/Http/RequestHandlers/AddChildToFamilyAction.php index 232df36526..1798c39960 100644 --- a/app/Http/RequestHandlers/AddChildToFamilyAction.php +++ b/app/Http/RequestHandlers/AddChildToFamilyAction.php @@ -22,7 +22,6 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\GedcomEditService; -use Fisharebest\Webtrees\Tree; use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; @@ -56,17 +55,11 @@ class AddChildToFamilyAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); $params = (array) $request->getParsedBody(); - $family = Registry::familyFactory()->make($xref, $tree); $family = Auth::checkFamilyAccess($family, true); - $levels = $params['ilevels'] ?? []; $tags = $params['itags'] ?? []; $values = $params['ivalues'] ?? []; @@ -78,8 +71,8 @@ class AddChildToFamilyAction implements RequestHandlerInterface // Link the child to the family $family->createFact('1 CHIL @' . $child->xref() . '@', false); - $base_url = $request->getAttribute('base_url'); - $url = Validator::parsedBody($request)->isLocalUrl($base_url)->string('url') ?? $child->url(); + $base_url = Validator::attributes($request)->string('base_url'); + $url = Validator::parsedBody($request)->isLocalUrl($base_url)->optionalString('url') ?? $child->url(); return redirect($url); } diff --git a/app/Http/RequestHandlers/AddChildToFamilyPage.php b/app/Http/RequestHandlers/AddChildToFamilyPage.php index 4715aa6623..2292eabb77 100644 --- a/app/Http/RequestHandlers/AddChildToFamilyPage.php +++ b/app/Http/RequestHandlers/AddChildToFamilyPage.php @@ -20,13 +20,12 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; -use Fisharebest\Webtrees\Fact; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\GedcomEditService; use Fisharebest\Webtrees\SurnameTradition; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -61,15 +60,9 @@ class AddChildToFamilyPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - - $sex = $request->getAttribute('sex'); - assert(is_string($sex)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); + $sex = Validator::attributes($request)->string('sex'); $family = Registry::familyFactory()->make($xref, $tree); $family = Auth::checkFamilyAccess($family, true); diff --git a/app/Http/RequestHandlers/AddChildToIndividualAction.php b/app/Http/RequestHandlers/AddChildToIndividualAction.php index 70aa01557d..98ec77636d 100644 --- a/app/Http/RequestHandlers/AddChildToIndividualAction.php +++ b/app/Http/RequestHandlers/AddChildToIndividualAction.php @@ -22,7 +22,6 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\GedcomEditService; -use Fisharebest\Webtrees\Tree; use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; @@ -56,14 +55,9 @@ class AddChildToIndividualAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - - $params = (array) $request->getParsedBody(); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); + $params = (array) $request->getParsedBody(); $individual = Registry::individualFactory()->make($xref, $tree); $individual = Auth::checkIndividualAccess($individual, true); @@ -86,8 +80,8 @@ class AddChildToIndividualAction implements RequestHandlerInterface // Link the child to the family $child->createFact('1 FAMC @' . $family->xref() . '@', false); - $base_url = $request->getAttribute('base_url'); - $url = Validator::parsedBody($request)->isLocalUrl($base_url)->string('url') ?? $child->url(); + $base_url = Validator::attributes($request)->string('base_url'); + $url = Validator::parsedBody($request)->isLocalUrl($base_url)->optionalString('url') ?? $child->url(); return redirect($url); } diff --git a/app/Http/RequestHandlers/AddChildToIndividualPage.php b/app/Http/RequestHandlers/AddChildToIndividualPage.php index c10635e636..3669fc1d3d 100644 --- a/app/Http/RequestHandlers/AddChildToIndividualPage.php +++ b/app/Http/RequestHandlers/AddChildToIndividualPage.php @@ -20,20 +20,16 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; -use Fisharebest\Webtrees\Fact; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\GedcomEditService; use Fisharebest\Webtrees\SurnameTradition; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function array_map; -use function assert; -use function is_string; use function route; /** @@ -62,12 +58,8 @@ class AddChildToIndividualPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); $individual = Registry::individualFactory()->make($xref, $tree); $individual = Auth::checkIndividualAccess($individual, true); diff --git a/app/Http/RequestHandlers/AddMediaFileAction.php b/app/Http/RequestHandlers/AddMediaFileAction.php index 249167ce59..31745241a1 100644 --- a/app/Http/RequestHandlers/AddMediaFileAction.php +++ b/app/Http/RequestHandlers/AddMediaFileAction.php @@ -25,13 +25,11 @@ use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\MediaFileService; use Fisharebest\Webtrees\Services\PendingChangesService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; -use function is_string; use function redirect; /** @@ -64,15 +62,10 @@ class AddMediaFileAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - - $media = Registry::mediaFactory()->make($xref, $tree); - $media = Auth::checkMediaAccess($media, true); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); + $media = Registry::mediaFactory()->make($xref, $tree); + $media = Auth::checkMediaAccess($media, true); $params = (array) $request->getParsedBody(); $title = $params['title'] ?? ''; $type = $params['type'] ?? ''; diff --git a/app/Http/RequestHandlers/AddMediaFileModal.php b/app/Http/RequestHandlers/AddMediaFileModal.php index 65ebea621e..326b8b9de4 100644 --- a/app/Http/RequestHandlers/AddMediaFileModal.php +++ b/app/Http/RequestHandlers/AddMediaFileModal.php @@ -25,7 +25,7 @@ use Fisharebest\Webtrees\Http\Exceptions\HttpNotFoundException; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\MediaFileService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -61,11 +61,8 @@ class AddMediaFileModal implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); $data_filesystem = Registry::filesystem()->data(); diff --git a/app/Http/RequestHandlers/AddNewFact.php b/app/Http/RequestHandlers/AddNewFact.php index 80fada3c0b..0da760c588 100644 --- a/app/Http/RequestHandlers/AddNewFact.php +++ b/app/Http/RequestHandlers/AddNewFact.php @@ -25,12 +25,11 @@ use Fisharebest\Webtrees\Http\Exceptions\HttpAccessDeniedException; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\GedcomEditService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function route; use function trim; @@ -60,11 +59,9 @@ class AddNewFact implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = (string) $request->getAttribute('xref'); - $subtag = (string) $request->getAttribute('fact'); + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); + $subtag = Validator::attributes($request)->isTag()->string('fact'); if ($subtag === 'OBJE' && !Auth::canUploadMedia($tree, Auth::user())) { throw new HttpAccessDeniedException(); diff --git a/app/Http/RequestHandlers/AddParentToIndividualAction.php b/app/Http/RequestHandlers/AddParentToIndividualAction.php index 9ea0f0dd5c..ace8bebed4 100644 --- a/app/Http/RequestHandlers/AddParentToIndividualAction.php +++ b/app/Http/RequestHandlers/AddParentToIndividualAction.php @@ -22,14 +22,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\GedcomEditService; -use Fisharebest\Webtrees\Tree; use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; -use function is_string; use function redirect; /** @@ -56,14 +53,9 @@ class AddParentToIndividualAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - - $params = (array) $request->getParsedBody(); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); + $params = (array) $request->getParsedBody(); $individual = Registry::individualFactory()->make($xref, $tree); $individual = Auth::checkIndividualAccess($individual, true); @@ -86,8 +78,8 @@ class AddParentToIndividualAction implements RequestHandlerInterface // Link the parent to the family $parent->createFact('1 FAMS @' . $family->xref() . '@', false); - $base_url = $request->getAttribute('base_url'); - $url = Validator::parsedBody($request)->isLocalUrl($base_url)->string('url') ?? $parent->url(); + $base_url = Validator::attributes($request)->string('base_url'); + $url = Validator::parsedBody($request)->isLocalUrl($base_url)->optionalString('url') ?? $parent->url(); return redirect($url); } diff --git a/app/Http/RequestHandlers/AddParentToIndividualPage.php b/app/Http/RequestHandlers/AddParentToIndividualPage.php index 8e4d6e8bb2..fbdc628b29 100644 --- a/app/Http/RequestHandlers/AddParentToIndividualPage.php +++ b/app/Http/RequestHandlers/AddParentToIndividualPage.php @@ -20,20 +20,16 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; -use Fisharebest\Webtrees\Fact; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\GedcomEditService; use Fisharebest\Webtrees\SurnameTradition; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function array_map; -use function assert; -use function is_string; use function route; /** @@ -62,15 +58,9 @@ class AddParentToIndividualPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - - $sex = $request->getAttribute('sex'); - assert(is_string($sex)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); + $sex = Validator::attributes($request)->string('sex'); $individual = Registry::individualFactory()->make($xref, $tree); $individual = Auth::checkIndividualAccess($individual, true); diff --git a/app/Http/RequestHandlers/AddSpouseToFamilyAction.php b/app/Http/RequestHandlers/AddSpouseToFamilyAction.php index f4d9a007c9..b33c8d781c 100644 --- a/app/Http/RequestHandlers/AddSpouseToFamilyAction.php +++ b/app/Http/RequestHandlers/AddSpouseToFamilyAction.php @@ -22,7 +22,6 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\GedcomEditService; -use Fisharebest\Webtrees\Tree; use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; @@ -56,14 +55,9 @@ class AddSpouseToFamilyAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); $params = (array) $request->getParsedBody(); - $family = Registry::familyFactory()->make($xref, $tree); $family = Auth::checkFamilyAccess($family, true); @@ -95,8 +89,8 @@ class AddSpouseToFamilyAction implements RequestHandlerInterface // Link the spouse to the family $family->createFact('1 ' . $link . ' @' . $spouse->xref() . '@', false); - $base_url = $request->getAttribute('base_url'); - $url = Validator::parsedBody($request)->isLocalUrl($base_url)->string('url') ?? $spouse->url(); + $base_url = Validator::attributes($request)->string('base_url'); + $url = Validator::parsedBody($request)->isLocalUrl($base_url)->optionalString('url') ?? $spouse->url(); return redirect($url); } diff --git a/app/Http/RequestHandlers/AddSpouseToFamilyPage.php b/app/Http/RequestHandlers/AddSpouseToFamilyPage.php index f1ba17b0ad..8e8a1ced7f 100644 --- a/app/Http/RequestHandlers/AddSpouseToFamilyPage.php +++ b/app/Http/RequestHandlers/AddSpouseToFamilyPage.php @@ -20,19 +20,17 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; -use Fisharebest\Webtrees\Fact; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Individual; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\GedcomEditService; use Fisharebest\Webtrees\SurnameTradition; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function array_map; use function assert; use function is_string; use function route; @@ -63,15 +61,9 @@ class AddSpouseToFamilyPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - - $sex = $request->getAttribute('sex'); - assert(is_string($sex)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); + $sex = Validator::attributes($request)->string('sex'); $family = Registry::familyFactory()->make($xref, $tree); $family = Auth::checkFamilyAccess($family, true); diff --git a/app/Http/RequestHandlers/AddSpouseToIndividualAction.php b/app/Http/RequestHandlers/AddSpouseToIndividualAction.php index edadd01aa1..12b4a283cf 100644 --- a/app/Http/RequestHandlers/AddSpouseToIndividualAction.php +++ b/app/Http/RequestHandlers/AddSpouseToIndividualAction.php @@ -22,14 +22,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\GedcomEditService; -use Fisharebest\Webtrees\Tree; use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; -use function is_string; use function redirect; /** @@ -56,14 +53,9 @@ class AddSpouseToIndividualAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - - $params = (array) $request->getParsedBody(); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); + $params = (array) $request->getParsedBody(); $individual = Registry::individualFactory()->make($xref, $tree); $individual = Auth::checkIndividualAccess($individual, true); @@ -89,8 +81,8 @@ class AddSpouseToIndividualAction implements RequestHandlerInterface // Link the spouse to the family $spouse->createFact('1 FAMS @' . $family->xref() . '@', false); - $base_url = $request->getAttribute('base_url'); - $url = Validator::parsedBody($request)->isLocalUrl($base_url)->string('url') ?? $spouse->url(); + $base_url = Validator::attributes($request)->string('base_url'); + $url = Validator::parsedBody($request)->isLocalUrl($base_url)->optionalString('url') ?? $spouse->url(); return redirect($url); } diff --git a/app/Http/RequestHandlers/AddSpouseToIndividualPage.php b/app/Http/RequestHandlers/AddSpouseToIndividualPage.php index e822aa482b..98ec966a94 100644 --- a/app/Http/RequestHandlers/AddSpouseToIndividualPage.php +++ b/app/Http/RequestHandlers/AddSpouseToIndividualPage.php @@ -20,20 +20,16 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; -use Fisharebest\Webtrees\Fact; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\GedcomEditService; use Fisharebest\Webtrees\SurnameTradition; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function array_map; -use function assert; -use function is_string; use function route; /** @@ -70,12 +66,8 @@ class AddSpouseToIndividualPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); $individual = Registry::individualFactory()->make($xref, $tree); $individual = Auth::checkIndividualAccess($individual, true); diff --git a/app/Http/RequestHandlers/AddUnlinkedAction.php b/app/Http/RequestHandlers/AddUnlinkedAction.php index 3212480b23..cb34f21298 100644 --- a/app/Http/RequestHandlers/AddUnlinkedAction.php +++ b/app/Http/RequestHandlers/AddUnlinkedAction.php @@ -20,13 +20,11 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Services\GedcomEditService; -use Fisharebest\Webtrees\Tree; use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function redirect; /** @@ -53,8 +51,7 @@ class AddUnlinkedAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); $params = (array) $request->getParsedBody(); @@ -66,8 +63,8 @@ class AddUnlinkedAction implements RequestHandlerInterface $individual = $tree->createIndividual("0 @@ INDI\n" . $gedcom); - $base_url = $request->getAttribute('base_url'); - $url = Validator::parsedBody($request)->isLocalUrl($base_url)->string('url') ?? $individual->url(); + $base_url = Validator::attributes($request)->string('base_url'); + $url = Validator::parsedBody($request)->isLocalUrl($base_url)->optionalString('url') ?? $individual->url(); return redirect($url); } diff --git a/app/Http/RequestHandlers/AddUnlinkedPage.php b/app/Http/RequestHandlers/AddUnlinkedPage.php index 3ec2059827..bd02d6d5b5 100644 --- a/app/Http/RequestHandlers/AddUnlinkedPage.php +++ b/app/Http/RequestHandlers/AddUnlinkedPage.php @@ -23,12 +23,11 @@ use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\GedcomEditService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function route; /** @@ -57,9 +56,7 @@ class AddUnlinkedPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - + $tree = Validator::attributes($request)->tree(); $sex = Registry::elementFactory()->make('INDI:SEX')->default($tree); $name = Registry::elementFactory()->make('INDI:NAME')->default($tree); diff --git a/app/Http/RequestHandlers/AdminMediaFileDownload.php b/app/Http/RequestHandlers/AdminMediaFileDownload.php index ca67824d81..3f81c22d61 100644 --- a/app/Http/RequestHandlers/AdminMediaFileDownload.php +++ b/app/Http/RequestHandlers/AdminMediaFileDownload.php @@ -20,6 +20,7 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Registry; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -39,8 +40,7 @@ class AdminMediaFileDownload implements RequestHandlerInterface public function handle(ServerRequestInterface $request): ResponseInterface { $filesystem = Registry::filesystem()->data(); - $params = $request->getQueryParams(); - $path = $params['path'] ?? ''; + $path = Validator::queryParams($request)->string('path'); return Registry::imageFactory()->fileResponse($filesystem, $path, false); } diff --git a/app/Http/RequestHandlers/AutoCompleteCitation.php b/app/Http/RequestHandlers/AutoCompleteCitation.php index e0b076b05e..8c2a2969f3 100644 --- a/app/Http/RequestHandlers/AutoCompleteCitation.php +++ b/app/Http/RequestHandlers/AutoCompleteCitation.php @@ -22,13 +22,12 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\GedcomRecord; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Illuminate\Database\Capsule\Manager as DB; use Illuminate\Database\Query\JoinClause; use Illuminate\Support\Collection; use Psr\Http\Message\ServerRequestInterface; -use function assert; use function preg_match_all; use function preg_quote; @@ -39,9 +38,7 @@ class AutoCompleteCitation extends AbstractAutocompleteHandler { protected function search(ServerRequestInterface $request): Collection { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - + $tree = Validator::attributes($request)->tree(); $query = $request->getQueryParams()['query'] ?? ''; $xref = $request->getQueryParams()['extra'] ?? ''; $source = Registry::sourceFactory()->make($xref, $tree); diff --git a/app/Http/RequestHandlers/AutoCompleteFolder.php b/app/Http/RequestHandlers/AutoCompleteFolder.php index 8b10b33626..14c43df247 100644 --- a/app/Http/RequestHandlers/AutoCompleteFolder.php +++ b/app/Http/RequestHandlers/AutoCompleteFolder.php @@ -21,13 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Services\MediaFileService; use Fisharebest\Webtrees\Services\SearchService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Illuminate\Support\Collection; use League\Flysystem\FilesystemException; use Psr\Http\Message\ServerRequestInterface; -use function assert; - /** * Autocomplete handler for media folders */ @@ -49,8 +47,7 @@ class AutoCompleteFolder extends AbstractAutocompleteHandler */ protected function search(ServerRequestInterface $request): Collection { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); $query = $request->getQueryParams()['query'] ?? ''; diff --git a/app/Http/RequestHandlers/AutoCompletePlace.php b/app/Http/RequestHandlers/AutoCompletePlace.php index 0fe25ab498..68a9ee5a75 100644 --- a/app/Http/RequestHandlers/AutoCompletePlace.php +++ b/app/Http/RequestHandlers/AutoCompletePlace.php @@ -23,12 +23,10 @@ use Fisharebest\Webtrees\Module\ModuleMapAutocompleteInterface; use Fisharebest\Webtrees\Place; use Fisharebest\Webtrees\Services\ModuleService; use Fisharebest\Webtrees\Services\SearchService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Illuminate\Support\Collection; use Psr\Http\Message\ServerRequestInterface; -use function assert; - /** * Autocomplete handler for places */ @@ -54,8 +52,7 @@ class AutoCompletePlace extends AbstractAutocompleteHandler */ protected function search(ServerRequestInterface $request): Collection { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); $query = $request->getQueryParams()['query'] ?? ''; diff --git a/app/Http/RequestHandlers/AutoCompleteSurname.php b/app/Http/RequestHandlers/AutoCompleteSurname.php index 2f3541b15b..bba63837bc 100644 --- a/app/Http/RequestHandlers/AutoCompleteSurname.php +++ b/app/Http/RequestHandlers/AutoCompleteSurname.php @@ -19,12 +19,10 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Illuminate\Support\Collection; use Psr\Http\Message\ServerRequestInterface; -use function assert; - /** * Autocomplete handler for surnames */ @@ -37,8 +35,7 @@ class AutoCompleteSurname extends AbstractAutocompleteHandler */ protected function search(ServerRequestInterface $request): Collection { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); $query = $request->getQueryParams()['query'] ?? ''; diff --git a/app/Http/RequestHandlers/BroadcastAction.php b/app/Http/RequestHandlers/BroadcastAction.php index fdffd1ab2c..8a5c09ed6c 100644 --- a/app/Http/RequestHandlers/BroadcastAction.php +++ b/app/Http/RequestHandlers/BroadcastAction.php @@ -23,6 +23,7 @@ use Fisharebest\Webtrees\FlashMessages; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Services\MessageService; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -57,13 +58,13 @@ class BroadcastAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $user = $request->getAttribute('user'); + $user = Validator::attributes($request)->user(); $params = (array) $request->getParsedBody(); $body = $params['body']; $subject = $params['subject']; $to = $params['to']; - $ip = $request->getAttribute('client-ip'); + $ip = Validator::attributes($request)->string('client-ip'); $to_users = $this->message_service->recipientUsers($to); if ($body === '' || $subject === '') { diff --git a/app/Http/RequestHandlers/BroadcastPage.php b/app/Http/RequestHandlers/BroadcastPage.php index b84467bdf4..9de46dae2c 100644 --- a/app/Http/RequestHandlers/BroadcastPage.php +++ b/app/Http/RequestHandlers/BroadcastPage.php @@ -22,6 +22,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Contracts\UserInterface; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\Services\MessageService; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -52,7 +53,7 @@ class BroadcastPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $user = $request->getAttribute('user'); + $user = Validator::attributes($request)->user(); $params = $request->getQueryParams(); $body = $params['body'] ?? ''; $subject = $params['subject'] ?? ''; diff --git a/app/Http/RequestHandlers/CalendarAction.php b/app/Http/RequestHandlers/CalendarAction.php index 0b0d33f066..379055fbda 100644 --- a/app/Http/RequestHandlers/CalendarAction.php +++ b/app/Http/RequestHandlers/CalendarAction.php @@ -19,12 +19,11 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function redirect; use function route; @@ -40,10 +39,8 @@ class CalendarAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $view = $request->getAttribute('view'); + $tree = Validator::attributes($request)->tree(); + $view = Validator::attributes($request)->string('view'); $params = (array) $request->getParsedBody(); diff --git a/app/Http/RequestHandlers/CalendarEvents.php b/app/Http/RequestHandlers/CalendarEvents.php index 28661e8f9d..669f1ed33f 100644 --- a/app/Http/RequestHandlers/CalendarEvents.php +++ b/app/Http/RequestHandlers/CalendarEvents.php @@ -33,12 +33,12 @@ use Fisharebest\Webtrees\Individual; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\CalendarService; use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Illuminate\Support\Collection; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function count; use function e; use function explode; @@ -75,10 +75,8 @@ class CalendarEvents implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $view = $request->getAttribute('view'); + $tree = Validator::attributes($request)->tree(); + $view = Validator::attributes($request)->string('view'); $CALENDAR_FORMAT = $tree->getPreference('CALENDAR_FORMAT'); $cal = $request->getQueryParams()['cal'] ?? ''; diff --git a/app/Http/RequestHandlers/CalendarPage.php b/app/Http/RequestHandlers/CalendarPage.php index 3b7c01f4bc..c845a551ed 100644 --- a/app/Http/RequestHandlers/CalendarPage.php +++ b/app/Http/RequestHandlers/CalendarPage.php @@ -24,13 +24,11 @@ use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Services\CalendarService; use Fisharebest\Webtrees\Services\LocalizationService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; - /** * Show anniversaries for events in a given day/month/year. */ @@ -63,10 +61,9 @@ class CalendarPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); - $view = $request->getAttribute('view'); + $view = Validator::attributes($request)->string('view'); $cal = $request->getQueryParams()['cal'] ?? ''; $day = $request->getQueryParams()['day'] ?? ''; $month = $request->getQueryParams()['month'] ?? ''; diff --git a/app/Http/RequestHandlers/ChangeFamilyMembersAction.php b/app/Http/RequestHandlers/ChangeFamilyMembersAction.php index 68fac3ff62..0a6b334482 100644 --- a/app/Http/RequestHandlers/ChangeFamilyMembersAction.php +++ b/app/Http/RequestHandlers/ChangeFamilyMembersAction.php @@ -22,12 +22,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Individual; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function in_array; use function redirect; @@ -43,8 +42,7 @@ class ChangeFamilyMembersAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); $params = (array) $request->getParsedBody(); diff --git a/app/Http/RequestHandlers/ChangeFamilyMembersPage.php b/app/Http/RequestHandlers/ChangeFamilyMembersPage.php index 0463c2d67e..c41eab84f4 100644 --- a/app/Http/RequestHandlers/ChangeFamilyMembersPage.php +++ b/app/Http/RequestHandlers/ChangeFamilyMembersPage.php @@ -23,13 +23,11 @@ use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; - /** * Change the members of a family. */ @@ -44,9 +42,7 @@ class ChangeFamilyMembersPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - + $tree = Validator::attributes($request)->tree(); $xref = $request->getQueryParams()['xref']; $family = Registry::familyFactory()->make($xref, $tree); $family = Auth::checkFamilyAccess($family, true); diff --git a/app/Http/RequestHandlers/CheckTree.php b/app/Http/RequestHandlers/CheckTree.php index ea5fa515f6..8ccb1a7766 100644 --- a/app/Http/RequestHandlers/CheckTree.php +++ b/app/Http/RequestHandlers/CheckTree.php @@ -24,6 +24,7 @@ use Fisharebest\Webtrees\Header; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Illuminate\Database\Capsule\Manager as DB; use Illuminate\Database\Query\Expression; use Psr\Http\Message\ResponseInterface; @@ -31,7 +32,6 @@ use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; use function array_key_exists; -use function assert; use function e; use function in_array; use function preg_match; @@ -57,8 +57,7 @@ class CheckTree implements RequestHandlerInterface { $this->layout = 'layouts/administration'; - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); // We need to work with raw GEDCOM data, as we are looking for errors // which may prevent the GedcomRecord objects from working. diff --git a/app/Http/RequestHandlers/CleanDataFolder.php b/app/Http/RequestHandlers/CleanDataFolder.php index 9e09f12e56..058c443313 100644 --- a/app/Http/RequestHandlers/CleanDataFolder.php +++ b/app/Http/RequestHandlers/CleanDataFolder.php @@ -23,6 +23,7 @@ use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\TreeService; +use Fisharebest\Webtrees\Validator; use League\Flysystem\FilesystemException; use League\Flysystem\FilesystemReader; use League\Flysystem\StorageAttributes; @@ -69,8 +70,8 @@ class CleanDataFolder implements RequestHandlerInterface 'config.ini.php', ]; - if ($request->getAttribute('dbtype') === 'sqlite') { - $protected[] = $request->getAttribute('dbname') . '.sqlite'; + if (Validator::attributes($request)->string('dbtype') === 'sqlite') { + $protected[] = Validator::attributes($request)->string('dbname') . '.sqlite'; } // Protect the media folders diff --git a/app/Http/RequestHandlers/ContactAction.php b/app/Http/RequestHandlers/ContactAction.php index 2364751031..0460f4a551 100644 --- a/app/Http/RequestHandlers/ContactAction.php +++ b/app/Http/RequestHandlers/ContactAction.php @@ -30,13 +30,11 @@ use Fisharebest\Webtrees\Services\EmailService; use Fisharebest\Webtrees\Services\MessageService; use Fisharebest\Webtrees\Services\RateLimitService; use Fisharebest\Webtrees\Services\UserService; -use Fisharebest\Webtrees\Tree; use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function e; use function in_array; use function preg_match; @@ -91,17 +89,16 @@ class ContactAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); - $base_url = $request->getAttribute('base_url'); - $body = Validator::parsedBody($request)->string('body') ?? ''; - $from_email = Validator::parsedBody($request)->string('from_email') ?? ''; - $from_name = Validator::parsedBody($request)->string('from_name') ?? ''; - $subject = Validator::parsedBody($request)->string('subject') ?? ''; - $to = Validator::parsedBody($request)->string('to') ?? ''; - $url = Validator::parsedBody($request)->isLocalUrl($base_url)->string('url') ?? $base_url; - $ip = $request->getAttribute('client-ip'); + $base_url = Validator::attributes($request)->string('base_url'); + $body = Validator::parsedBody($request)->optionalString('body') ?? ''; + $from_email = Validator::parsedBody($request)->optionalString('from_email') ?? ''; + $from_name = Validator::parsedBody($request)->optionalString('from_name') ?? ''; + $subject = Validator::parsedBody($request)->optionalString('subject') ?? ''; + $to = Validator::parsedBody($request)->optionalString('to') ?? ''; + $url = Validator::parsedBody($request)->isLocalUrl($base_url)->optionalString('url') ?? $base_url; + $ip = Validator::attributes($request)->string('client-ip'); $to_user = $this->user_service->findByUserName($to); if ($to_user === null) { diff --git a/app/Http/RequestHandlers/ContactPage.php b/app/Http/RequestHandlers/ContactPage.php index db371779c8..44fbbf0c46 100644 --- a/app/Http/RequestHandlers/ContactPage.php +++ b/app/Http/RequestHandlers/ContactPage.php @@ -25,12 +25,11 @@ use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Services\CaptchaService; use Fisharebest\Webtrees\Services\MessageService; use Fisharebest\Webtrees\Services\UserService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function in_array; use function route; @@ -71,9 +70,7 @@ class ContactPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - + $tree = Validator::attributes($request)->tree(); $params = $request->getQueryParams(); $body = $params['body'] ?? ''; $from_email = $params['from_email'] ?? ''; diff --git a/app/Http/RequestHandlers/CopyFact.php b/app/Http/RequestHandlers/CopyFact.php index fbc01219b5..a788cf8383 100644 --- a/app/Http/RequestHandlers/CopyFact.php +++ b/app/Http/RequestHandlers/CopyFact.php @@ -24,13 +24,11 @@ use Fisharebest\Webtrees\FlashMessages; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\ClipboardService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; -use function is_string; use function response; /** @@ -59,13 +57,9 @@ class CopyFact implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - - $fact_id = $request->getAttribute('fact_id'); + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); + $fact_id = Validator::attributes($request)->string('fact_id'); $record = Registry::gedcomRecordFactory()->make($xref, $tree); $record = Auth::checkRecordAccess($record, true); diff --git a/app/Http/RequestHandlers/CreateLocationAction.php b/app/Http/RequestHandlers/CreateLocationAction.php index 95c93703eb..06068050df 100644 --- a/app/Http/RequestHandlers/CreateLocationAction.php +++ b/app/Http/RequestHandlers/CreateLocationAction.php @@ -21,13 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; - /** * Process a form to create a new location. */ @@ -40,8 +38,7 @@ class CreateLocationAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); $params = (array) $request->getParsedBody(); $name = $params['location_name']; diff --git a/app/Http/RequestHandlers/CreateLocationModal.php b/app/Http/RequestHandlers/CreateLocationModal.php index 8fbf673e43..7afbaddcf5 100644 --- a/app/Http/RequestHandlers/CreateLocationModal.php +++ b/app/Http/RequestHandlers/CreateLocationModal.php @@ -19,12 +19,11 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function response; use function view; @@ -40,8 +39,7 @@ class CreateLocationModal implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); return response(view('modals/create-location', [ 'tree' => $tree, diff --git a/app/Http/RequestHandlers/CreateMediaObjectAction.php b/app/Http/RequestHandlers/CreateMediaObjectAction.php index 3541795d6a..d2f5674ee8 100644 --- a/app/Http/RequestHandlers/CreateMediaObjectAction.php +++ b/app/Http/RequestHandlers/CreateMediaObjectAction.php @@ -24,12 +24,11 @@ use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\MediaFileService; use Fisharebest\Webtrees\Services\PendingChangesService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function in_array; use function response; @@ -63,9 +62,7 @@ class CreateMediaObjectAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - + $tree = Validator::attributes($request)->tree(); $params = (array) $request->getParsedBody(); $note = $params['media-note'] ?? ''; $title = $params['title'] ?? ''; diff --git a/app/Http/RequestHandlers/CreateMediaObjectFromFile.php b/app/Http/RequestHandlers/CreateMediaObjectFromFile.php index b6db5cedcc..6b39c0a857 100644 --- a/app/Http/RequestHandlers/CreateMediaObjectFromFile.php +++ b/app/Http/RequestHandlers/CreateMediaObjectFromFile.php @@ -21,13 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Services\MediaFileService; use Fisharebest\Webtrees\Services\PendingChangesService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; - /** * Create a new media object. */ @@ -56,9 +54,7 @@ class CreateMediaObjectFromFile implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - + $tree = Validator::attributes($request)->tree(); $params = (array) $request->getParsedBody(); $file = $params['file'] ?? ''; $type = $params['type'] ?? ''; diff --git a/app/Http/RequestHandlers/CreateMediaObjectModal.php b/app/Http/RequestHandlers/CreateMediaObjectModal.php index abfe4d29f9..d4214ee873 100644 --- a/app/Http/RequestHandlers/CreateMediaObjectModal.php +++ b/app/Http/RequestHandlers/CreateMediaObjectModal.php @@ -21,13 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\MediaFileService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; - /** * Show a form to create a new media object. */ @@ -52,9 +50,7 @@ class CreateMediaObjectModal implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - + $tree = Validator::attributes($request)->tree(); $max_upload_size = $this->media_file_service->maxUploadFilesize(); $media_types = Registry::elementFactory()->make('OBJE:FILE:FORM:TYPE')->values(); $data_filesystem = Registry::filesystem()->data(); diff --git a/app/Http/RequestHandlers/CreateNoteAction.php b/app/Http/RequestHandlers/CreateNoteAction.php index 6bba935ff8..e40cbd2436 100644 --- a/app/Http/RequestHandlers/CreateNoteAction.php +++ b/app/Http/RequestHandlers/CreateNoteAction.php @@ -21,13 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; - /** * Process a form to create a new note object. */ @@ -40,9 +38,7 @@ class CreateNoteAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - + $tree = Validator::attributes($request)->tree(); $params = (array) $request->getParsedBody(); $note = $params['note']; $restriction = $params['restriction']; diff --git a/app/Http/RequestHandlers/CreateNoteModal.php b/app/Http/RequestHandlers/CreateNoteModal.php index e37b27bbaa..0da3977a4b 100644 --- a/app/Http/RequestHandlers/CreateNoteModal.php +++ b/app/Http/RequestHandlers/CreateNoteModal.php @@ -19,12 +19,11 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function response; use function view; @@ -42,8 +41,7 @@ class CreateNoteModal implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); return response(view('modals/create-note-object', [ 'tree' => $tree, diff --git a/app/Http/RequestHandlers/CreateRepositoryAction.php b/app/Http/RequestHandlers/CreateRepositoryAction.php index 899d77525a..4b1e57af45 100644 --- a/app/Http/RequestHandlers/CreateRepositoryAction.php +++ b/app/Http/RequestHandlers/CreateRepositoryAction.php @@ -21,12 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function in_array; use function preg_replace; use function response; @@ -45,13 +44,11 @@ class CreateRepositoryAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $params = (array) $request->getParsedBody(); - $name = $params['name']; - $address = $params['address']; - $url = $params['url']; + $tree = Validator::attributes($request)->tree(); + $params = (array) $request->getParsedBody(); + $name = $params['name']; + $address = $params['address']; + $url = $params['url']; $restriction = $params['restriction']; // Fix non-printing characters diff --git a/app/Http/RequestHandlers/CreateRepositoryModal.php b/app/Http/RequestHandlers/CreateRepositoryModal.php index 07add2baf3..d283a1b9bd 100644 --- a/app/Http/RequestHandlers/CreateRepositoryModal.php +++ b/app/Http/RequestHandlers/CreateRepositoryModal.php @@ -23,12 +23,11 @@ use Fisharebest\Webtrees\Elements\AddressLine; use Fisharebest\Webtrees\Elements\AddressWebPage; use Fisharebest\Webtrees\Elements\NameOfRepository; use Fisharebest\Webtrees\I18N; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function response; use function view; @@ -44,8 +43,7 @@ class CreateRepositoryModal implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); $elements = [ 'name' => new NameOfRepository(I18N::translateContext('Repository', 'Name')), diff --git a/app/Http/RequestHandlers/CreateSourceAction.php b/app/Http/RequestHandlers/CreateSourceAction.php index c4ff922fc0..d5c6065986 100644 --- a/app/Http/RequestHandlers/CreateSourceAction.php +++ b/app/Http/RequestHandlers/CreateSourceAction.php @@ -21,13 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; - /** * Process a form to create a new source. */ @@ -40,8 +38,7 @@ class CreateSourceAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); $params = (array) $request->getParsedBody(); $title = $params['source-title']; diff --git a/app/Http/RequestHandlers/CreateSourceModal.php b/app/Http/RequestHandlers/CreateSourceModal.php index 7a316e65be..3d6a90b9e5 100644 --- a/app/Http/RequestHandlers/CreateSourceModal.php +++ b/app/Http/RequestHandlers/CreateSourceModal.php @@ -19,12 +19,11 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function response; use function view; @@ -40,8 +39,7 @@ class CreateSourceModal implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); return response(view('modals/create-source', [ 'tree' => $tree, diff --git a/app/Http/RequestHandlers/CreateSubmissionAction.php b/app/Http/RequestHandlers/CreateSubmissionAction.php index a9d538221b..c7753ed7d5 100644 --- a/app/Http/RequestHandlers/CreateSubmissionAction.php +++ b/app/Http/RequestHandlers/CreateSubmissionAction.php @@ -21,13 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; - /** * Process a form to create a new submission. */ @@ -40,9 +38,7 @@ class CreateSubmissionAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - + $tree = Validator::attributes($request)->tree(); $params = (array) $request->getParsedBody(); $submitter = $params['submitter']; diff --git a/app/Http/RequestHandlers/CreateSubmissionModal.php b/app/Http/RequestHandlers/CreateSubmissionModal.php index 65bb713514..8d1bfebc85 100644 --- a/app/Http/RequestHandlers/CreateSubmissionModal.php +++ b/app/Http/RequestHandlers/CreateSubmissionModal.php @@ -19,13 +19,11 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; - /** * Show a form to create a new submission. */ @@ -38,8 +36,7 @@ class CreateSubmissionModal implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); return response(view('modals/create-submission', [ 'tree' => $tree, diff --git a/app/Http/RequestHandlers/CreateSubmitterAction.php b/app/Http/RequestHandlers/CreateSubmitterAction.php index 89958b4e14..2615236ba8 100644 --- a/app/Http/RequestHandlers/CreateSubmitterAction.php +++ b/app/Http/RequestHandlers/CreateSubmitterAction.php @@ -21,13 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; - /** * Process a form to create a new submitter. */ @@ -40,9 +38,7 @@ class CreateSubmitterAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - + $tree = Validator::attributes($request)->tree(); $params = (array) $request->getParsedBody(); $name = $params['submitter_name']; $address = $params['submitter_address']; diff --git a/app/Http/RequestHandlers/CreateSubmitterModal.php b/app/Http/RequestHandlers/CreateSubmitterModal.php index 0b7a13daeb..1c32d35165 100644 --- a/app/Http/RequestHandlers/CreateSubmitterModal.php +++ b/app/Http/RequestHandlers/CreateSubmitterModal.php @@ -19,13 +19,11 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; - /** * Show a form to create a new submitter. */ @@ -38,8 +36,7 @@ class CreateSubmitterModal implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); return response(view('modals/create-submitter', [ 'tree' => $tree, diff --git a/app/Http/RequestHandlers/DataFixChoose.php b/app/Http/RequestHandlers/DataFixChoose.php index ef7e84f283..4c3b93a40d 100644 --- a/app/Http/RequestHandlers/DataFixChoose.php +++ b/app/Http/RequestHandlers/DataFixChoose.php @@ -23,12 +23,11 @@ use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Module\ModuleDataFixInterface; use Fisharebest\Webtrees\Services\ModuleService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function e; /** @@ -57,8 +56,7 @@ class DataFixChoose implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); $data_fixes = $this->module_service->findByInterface(ModuleDataFixInterface::class, false, true); diff --git a/app/Http/RequestHandlers/DataFixData.php b/app/Http/RequestHandlers/DataFixData.php index d9c0afcbdb..04b68a5686 100644 --- a/app/Http/RequestHandlers/DataFixData.php +++ b/app/Http/RequestHandlers/DataFixData.php @@ -25,7 +25,7 @@ use Fisharebest\Webtrees\Module\ModuleDataFixInterface; use Fisharebest\Webtrees\Services\DataFixService; use Fisharebest\Webtrees\Services\DatatablesService; use Fisharebest\Webtrees\Services\ModuleService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -70,10 +70,8 @@ class DataFixData implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $data_fix = $request->getAttribute('data_fix') ?? ''; + $tree = Validator::attributes($request)->tree(); + $data_fix = Validator::attributes($request)->string('data_fix', ''); $module = $this->module_service->findByName($data_fix); assert($module instanceof ModuleDataFixInterface); diff --git a/app/Http/RequestHandlers/DataFixPage.php b/app/Http/RequestHandlers/DataFixPage.php index c79c7750a4..a91cbc6447 100644 --- a/app/Http/RequestHandlers/DataFixPage.php +++ b/app/Http/RequestHandlers/DataFixPage.php @@ -23,12 +23,11 @@ use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Module\ModuleDataFixInterface; use Fisharebest\Webtrees\Services\ModuleService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function e; use function redirect; use function route; @@ -59,8 +58,7 @@ class DataFixPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); $data_fixes = $this->module_service->findByInterface(ModuleDataFixInterface::class, false, true); @@ -68,7 +66,7 @@ class DataFixPage implements RequestHandlerInterface return redirect(route('control-panel')); } - $data_fix = $request->getAttribute('data_fix') ?? ''; + $data_fix = Validator::attributes($request)->string('data_fix', ''); $module = $this->module_service->findByName($data_fix); $this->layout = 'layouts/administration'; diff --git a/app/Http/RequestHandlers/DataFixPreview.php b/app/Http/RequestHandlers/DataFixPreview.php index 5bcd235c1b..8fb919a4be 100644 --- a/app/Http/RequestHandlers/DataFixPreview.php +++ b/app/Http/RequestHandlers/DataFixPreview.php @@ -25,7 +25,7 @@ use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Module\ModuleDataFixInterface; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\ModuleService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -58,10 +58,8 @@ class DataFixPreview implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $data_fix = $request->getAttribute('data_fix', ''); + $tree = Validator::attributes($request)->tree(); + $data_fix = Validator::attributes($request)->string('data_fix', ''); $module = $this->module_service->findByName($data_fix); assert($module instanceof ModuleDataFixInterface); diff --git a/app/Http/RequestHandlers/DataFixSelect.php b/app/Http/RequestHandlers/DataFixSelect.php index 89f75f8dc4..62052e9417 100644 --- a/app/Http/RequestHandlers/DataFixSelect.php +++ b/app/Http/RequestHandlers/DataFixSelect.php @@ -21,12 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Module\ModuleDataFixInterface; use Fisharebest\Webtrees\Services\ModuleService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function redirect; use function route; @@ -54,9 +53,7 @@ class DataFixSelect implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - + $tree = Validator::attributes($request)->tree(); $data_fixes = $this->module_service->findByInterface(ModuleDataFixInterface::class); $data_fix = $request->getParsedBody()['data_fix'] ?? ''; diff --git a/app/Http/RequestHandlers/DataFixUpdate.php b/app/Http/RequestHandlers/DataFixUpdate.php index 131e7ed84b..ef1ff857c8 100644 --- a/app/Http/RequestHandlers/DataFixUpdate.php +++ b/app/Http/RequestHandlers/DataFixUpdate.php @@ -23,7 +23,7 @@ use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Module\ModuleDataFixInterface; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\ModuleService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -55,10 +55,8 @@ class DataFixUpdate implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $data_fix = $request->getAttribute('data_fix', ''); + $tree = Validator::attributes($request)->tree(); + $data_fix = Validator::attributes($request)->string('data_fix', ''); $module = $this->module_service->findByName($data_fix); assert($module instanceof ModuleDataFixInterface); diff --git a/app/Http/RequestHandlers/DataFixUpdateAll.php b/app/Http/RequestHandlers/DataFixUpdateAll.php index 165ce2f8cd..ac865d1a50 100644 --- a/app/Http/RequestHandlers/DataFixUpdateAll.php +++ b/app/Http/RequestHandlers/DataFixUpdateAll.php @@ -25,6 +25,7 @@ use Fisharebest\Webtrees\Module\ModuleDataFixInterface; use Fisharebest\Webtrees\Services\DataFixService; use Fisharebest\Webtrees\Services\ModuleService; use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Illuminate\Support\Collection; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; @@ -69,10 +70,8 @@ class DataFixUpdateAll implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $data_fix = $request->getAttribute('data_fix', ''); + $tree = Validator::attributes($request)->tree(); + $data_fix = Validator::attributes($request)->string('data_fix', ''); $module = $this->module_service->findByName($data_fix); assert($module instanceof ModuleDataFixInterface); diff --git a/app/Http/RequestHandlers/DeleteFact.php b/app/Http/RequestHandlers/DeleteFact.php index 8c76ed96fe..f0708f1e5c 100644 --- a/app/Http/RequestHandlers/DeleteFact.php +++ b/app/Http/RequestHandlers/DeleteFact.php @@ -21,13 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; -use function is_string; use function response; /** @@ -44,13 +42,9 @@ class DeleteFact implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - - $fact_id = $request->getAttribute('fact_id'); + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); + $fact_id = Validator::attributes($request)->string('fact_id'); $record = Registry::gedcomRecordFactory()->make($xref, $tree); $record = Auth::checkRecordAccess($record, true); diff --git a/app/Http/RequestHandlers/DeleteRecord.php b/app/Http/RequestHandlers/DeleteRecord.php index 10c57d1831..1eda700238 100644 --- a/app/Http/RequestHandlers/DeleteRecord.php +++ b/app/Http/RequestHandlers/DeleteRecord.php @@ -26,14 +26,12 @@ use Fisharebest\Webtrees\Gedcom; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Individual; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function e; -use function is_string; use function preg_match_all; use function preg_replace; use function response; @@ -53,12 +51,8 @@ class DeleteRecord implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); $record = Registry::gedcomRecordFactory()->make($xref, $tree); $record = Auth::checkRecordAccess($record, true); diff --git a/app/Http/RequestHandlers/DeleteTreeAction.php b/app/Http/RequestHandlers/DeleteTreeAction.php index 596c1d898d..036c1dcfbe 100644 --- a/app/Http/RequestHandlers/DeleteTreeAction.php +++ b/app/Http/RequestHandlers/DeleteTreeAction.php @@ -22,12 +22,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\FlashMessages; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Services\TreeService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function e; use function response; @@ -55,8 +54,7 @@ class DeleteTreeAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); $this->tree_service->delete($tree); diff --git a/app/Http/RequestHandlers/EditFactAction.php b/app/Http/RequestHandlers/EditFactAction.php index 6259322f35..d4df74d8b2 100644 --- a/app/Http/RequestHandlers/EditFactAction.php +++ b/app/Http/RequestHandlers/EditFactAction.php @@ -25,7 +25,6 @@ use Fisharebest\Webtrees\Module\CensusAssistantModule; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\GedcomEditService; use Fisharebest\Webtrees\Services\ModuleService; -use Fisharebest\Webtrees\Tree; use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; @@ -63,14 +62,9 @@ class EditFactAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - - $fact_id = $request->getAttribute('fact_id') ?? ''; - assert(is_string($fact_id)); + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); + $fact_id = Validator::attributes($request)->string('fact_id'); $record = Registry::gedcomRecordFactory()->make($xref, $tree); $record = Auth::checkRecordAccess($record, true); @@ -118,8 +112,8 @@ class EditFactAction implements RequestHandlerInterface } } - $base_url = $request->getAttribute('base_url'); - $url = Validator::parsedBody($request)->isLocalUrl($base_url)->string('url') ?? $record->url(); + $base_url = Validator::attributes($request)->string('base_url'); + $url = Validator::parsedBody($request)->isLocalUrl($base_url)->optionalString('url') ?? $record->url(); return redirect($url); } diff --git a/app/Http/RequestHandlers/EditFactPage.php b/app/Http/RequestHandlers/EditFactPage.php index c2eb556167..819ec24cef 100644 --- a/app/Http/RequestHandlers/EditFactPage.php +++ b/app/Http/RequestHandlers/EditFactPage.php @@ -24,7 +24,7 @@ use Fisharebest\Webtrees\Fact; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\GedcomEditService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -59,15 +59,9 @@ class EditFactPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - - $fact_id = $request->getAttribute('fact_id'); - assert(is_string($fact_id)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); + $fact_id = Validator::attributes($request)->string('fact_id'); $include_hidden = (bool) ($request->getQueryParams()['include_hidden'] ?? false); $record = Registry::gedcomRecordFactory()->make($xref, $tree); diff --git a/app/Http/RequestHandlers/EditMediaFileAction.php b/app/Http/RequestHandlers/EditMediaFileAction.php index 32928c9ff2..b507e4542e 100644 --- a/app/Http/RequestHandlers/EditMediaFileAction.php +++ b/app/Http/RequestHandlers/EditMediaFileAction.php @@ -27,7 +27,7 @@ use Fisharebest\Webtrees\MediaFile; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\MediaFileService; use Fisharebest\Webtrees\Services\PendingChangesService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use League\Flysystem\FilesystemException; use League\Flysystem\UnableToMoveFile; use League\Flysystem\UnableToRetrieveMetadata; @@ -73,15 +73,9 @@ class EditMediaFileAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - - $fact_id = $request->getAttribute('fact_id'); - assert(is_string($fact_id)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); + $fact_id = Validator::attributes($request)->string('fact_id'); $data_filesystem = Registry::filesystem()->data(); $params = (array) $request->getParsedBody(); diff --git a/app/Http/RequestHandlers/EditMediaFileModal.php b/app/Http/RequestHandlers/EditMediaFileModal.php index 91e5dba7db..f7d1dfad6d 100644 --- a/app/Http/RequestHandlers/EditMediaFileModal.php +++ b/app/Http/RequestHandlers/EditMediaFileModal.php @@ -26,7 +26,7 @@ use Fisharebest\Webtrees\Http\Exceptions\HttpNotFoundException; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\MediaFileService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -62,15 +62,9 @@ class EditMediaFileModal implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - - $fact_id = $request->getAttribute('fact_id'); - assert(is_string($fact_id)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); + $fact_id = Validator::attributes($request)->string('fact_id'); $data_filesystem = Registry::filesystem()->data(); $media = Registry::mediaFactory()->make($xref, $tree); diff --git a/app/Http/RequestHandlers/EditNoteAction.php b/app/Http/RequestHandlers/EditNoteAction.php index 227807be17..db0e08f4e0 100644 --- a/app/Http/RequestHandlers/EditNoteAction.php +++ b/app/Http/RequestHandlers/EditNoteAction.php @@ -21,13 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; - /** * Edit note objects. */ @@ -42,14 +40,10 @@ class EditNoteAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - - $note = Registry::noteFactory()->make($xref, $tree); - $note = Auth::checkNoteAccess($note, true); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); + $note = Registry::noteFactory()->make($xref, $tree); + $note = Auth::checkNoteAccess($note, true); $params = (array) $request->getParsedBody(); $NOTE = $params['NOTE']; diff --git a/app/Http/RequestHandlers/EditNotePage.php b/app/Http/RequestHandlers/EditNotePage.php index 9e8b0fad41..4bd3b8570f 100644 --- a/app/Http/RequestHandlers/EditNotePage.php +++ b/app/Http/RequestHandlers/EditNotePage.php @@ -23,13 +23,11 @@ use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; - /** * Edit note objects. */ @@ -46,11 +44,8 @@ class EditNotePage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); $note = Registry::noteFactory()->make($xref, $tree); $note = Auth::checkNoteAccess($note, true); diff --git a/app/Http/RequestHandlers/EditRawFactAction.php b/app/Http/RequestHandlers/EditRawFactAction.php index 67c8bd7352..b5f347b3ff 100644 --- a/app/Http/RequestHandlers/EditRawFactAction.php +++ b/app/Http/RequestHandlers/EditRawFactAction.php @@ -21,14 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; -use function is_string; use function preg_replace; use function redirect; use function trim; @@ -45,21 +42,13 @@ class EditRawFactAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - - $record = Registry::gedcomRecordFactory()->make($xref, $tree); - $record = Auth::checkRecordAccess($record, true); - - $fact_id = $request->getAttribute('fact_id'); - assert(is_string($fact_id)); - - $params = (array) $request->getParsedBody(); - - $gedcom = $params['gedcom']; + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); + $record = Registry::gedcomRecordFactory()->make($xref, $tree); + $record = Auth::checkRecordAccess($record, true); + $fact_id = Validator::attributes($request)->string('fact_id'); + $params = (array) $request->getParsedBody(); + $gedcom = $params['gedcom']; // Cleanup the client’s bad editing? $gedcom = preg_replace('/[\r\n]+/', "\n", $gedcom); // Empty lines @@ -73,8 +62,8 @@ class EditRawFactAction implements RequestHandlerInterface } } - $base_url = $request->getAttribute('base_url'); - $url = Validator::parsedBody($request)->isLocalUrl($base_url)->string('url') ?? $record->url(); + $base_url = Validator::attributes($request)->string('base_url'); + $url = Validator::parsedBody($request)->isLocalUrl($base_url)->optionalString('url') ?? $record->url(); return redirect($url); } diff --git a/app/Http/RequestHandlers/EditRawFactPage.php b/app/Http/RequestHandlers/EditRawFactPage.php index 14258be92d..67aed2d3a0 100644 --- a/app/Http/RequestHandlers/EditRawFactPage.php +++ b/app/Http/RequestHandlers/EditRawFactPage.php @@ -24,13 +24,11 @@ use Fisharebest\Webtrees\Fact; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; -use function is_string; use function redirect; /** @@ -47,18 +45,12 @@ class EditRawFactPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - - $record = Registry::gedcomRecordFactory()->make($xref, $tree); - $record = Auth::checkRecordAccess($record, true); - - $fact_id = $request->getAttribute('fact_id'); - - $title = I18N::translate('Edit the raw GEDCOM') . ' - ' . $record->fullName(); + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); + $record = Registry::gedcomRecordFactory()->make($xref, $tree); + $record = Auth::checkRecordAccess($record, true); + $fact_id = Validator::attributes($request)->string('fact_id'); + $title = I18N::translate('Edit the raw GEDCOM') . ' - ' . $record->fullName(); $fact = $record->facts([], false, null, true) ->first(static function (Fact $fact) use ($fact_id): bool { diff --git a/app/Http/RequestHandlers/EditRawRecordAction.php b/app/Http/RequestHandlers/EditRawRecordAction.php index f57f095a90..5c67ca5797 100644 --- a/app/Http/RequestHandlers/EditRawRecordAction.php +++ b/app/Http/RequestHandlers/EditRawRecordAction.php @@ -23,7 +23,7 @@ use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\GedcomRecord; use Fisharebest\Webtrees\Header; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -44,15 +44,10 @@ class EditRawRecordAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); $record = Registry::gedcomRecordFactory()->make($xref, $tree); $record = Auth::checkRecordAccess($record, true); - $params = (array) $request->getParsedBody(); $level0 = $params['level0']; diff --git a/app/Http/RequestHandlers/EditRawRecordPage.php b/app/Http/RequestHandlers/EditRawRecordPage.php index 21deda1954..dbf4368b45 100644 --- a/app/Http/RequestHandlers/EditRawRecordPage.php +++ b/app/Http/RequestHandlers/EditRawRecordPage.php @@ -23,7 +23,7 @@ use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -46,12 +46,8 @@ class EditRawRecordPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); $record = Registry::gedcomRecordFactory()->make($xref, $tree); $record = Auth::checkRecordAccess($record, true); diff --git a/app/Http/RequestHandlers/EditRecordAction.php b/app/Http/RequestHandlers/EditRecordAction.php index 40fabcf911..275293a8a0 100644 --- a/app/Http/RequestHandlers/EditRecordAction.php +++ b/app/Http/RequestHandlers/EditRecordAction.php @@ -23,13 +23,11 @@ use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Header; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\GedcomEditService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; -use function is_string; use function redirect; /** @@ -56,15 +54,10 @@ class EditRecordAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - - $record = Registry::gedcomRecordFactory()->make($xref, $tree); - $record = Auth::checkRecordAccess($record, true); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); + $record = Registry::gedcomRecordFactory()->make($xref, $tree); + $record = Auth::checkRecordAccess($record, true); $params = (array) $request->getParsedBody(); $keep_chan = (bool) ($params['keep_chan'] ?? false); $levels = $params['levels']; diff --git a/app/Http/RequestHandlers/EditRecordPage.php b/app/Http/RequestHandlers/EditRecordPage.php index f12f424bb7..9e8ad920a1 100644 --- a/app/Http/RequestHandlers/EditRecordPage.php +++ b/app/Http/RequestHandlers/EditRecordPage.php @@ -23,13 +23,11 @@ use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\GedcomEditService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; -use function is_string; use function route; /** @@ -58,12 +56,8 @@ class EditRecordPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); $record = Registry::gedcomRecordFactory()->make($xref, $tree); $record = Auth::checkRecordAccess($record, true); diff --git a/app/Http/RequestHandlers/EmailPreferencesAction.php b/app/Http/RequestHandlers/EmailPreferencesAction.php index 2c09fc7278..ced2316aa8 100644 --- a/app/Http/RequestHandlers/EmailPreferencesAction.php +++ b/app/Http/RequestHandlers/EmailPreferencesAction.php @@ -24,7 +24,7 @@ use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Services\EmailService; use Fisharebest\Webtrees\Site; use Fisharebest\Webtrees\SiteUser; -use Fisharebest\Webtrees\User; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -57,9 +57,7 @@ class EmailPreferencesAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $user = $request->getAttribute('user'); - assert($user instanceof User); - + $user = Validator::attributes($request)->user(); $params = (array) $request->getParsedBody(); Site::setPreference('SMTP_ACTIVE', $params['SMTP_ACTIVE']); diff --git a/app/Http/RequestHandlers/EmptyClipboard.php b/app/Http/RequestHandlers/EmptyClipboard.php index a49681cd15..78ec1ea2f6 100644 --- a/app/Http/RequestHandlers/EmptyClipboard.php +++ b/app/Http/RequestHandlers/EmptyClipboard.php @@ -55,9 +55,9 @@ class EmptyClipboard implements RequestHandlerInterface { $this->clipboard_service->emptyClipboard(); - $base_url = $request->getAttribute('base_url'); + $base_url = Validator::attributes($request)->string('base_url'); $default_url = $request->getHeaderLine('Referer'); - $url = Validator::parsedBody($request)->isLocalUrl($base_url)->string('url') ?? $default_url; + $url = Validator::parsedBody($request)->isLocalUrl($base_url)->optionalString('url') ?? $default_url; return redirect($url); } diff --git a/app/Http/RequestHandlers/ExportGedcomClient.php b/app/Http/RequestHandlers/ExportGedcomClient.php index 9d42cbcd37..c284cd8517 100644 --- a/app/Http/RequestHandlers/ExportGedcomClient.php +++ b/app/Http/RequestHandlers/ExportGedcomClient.php @@ -29,7 +29,6 @@ use Fisharebest\Webtrees\GedcomRecord; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\GedcomExportService; -use Fisharebest\Webtrees\Tree; use Fisharebest\Webtrees\Validator; use Illuminate\Database\Capsule\Manager as DB; use League\Flysystem\Filesystem; @@ -43,7 +42,6 @@ use Psr\Http\Message\StreamFactoryInterface; use Psr\Http\Server\RequestHandlerInterface; use function addcslashes; -use function assert; use function fclose; use function pathinfo; use function strtolower; @@ -89,16 +87,15 @@ class ExportGedcomClient implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); $data_filesystem = Registry::filesystem()->data(); - $format = Validator::parsedBody($request)->isInArray(['gedcom', 'zip'])->requiredString('format'); - $privacy = Validator::parsedBody($request)->isInArray(['none', 'gedadmin', 'user', 'visitor'])->requiredString('privacy'); - $encoding = Validator::parsedBody($request)->isInArray([UTF8::NAME, UTF16BE::NAME, ANSEL::NAME, ASCII::NAME, Windows1252::NAME])->requiredString('encoding'); - $line_endings = Validator::parsedBody($request)->isInArray(['CRLF', 'LF'])->requiredString('line_endings'); - $media_path = Validator::parsedBody($request)->string('media_path') ?? ''; + $format = Validator::parsedBody($request)->isInArray(['gedcom', 'zip'])->string('format'); + $privacy = Validator::parsedBody($request)->isInArray(['none', 'gedadmin', 'user', 'visitor'])->string('privacy'); + $encoding = Validator::parsedBody($request)->isInArray([UTF8::NAME, UTF16BE::NAME, ANSEL::NAME, ASCII::NAME, Windows1252::NAME])->string('encoding'); + $line_endings = Validator::parsedBody($request)->isInArray(['CRLF', 'LF'])->string('line_endings'); + $media_path = Validator::parsedBody($request)->optionalString('media_path') ?? ''; $access_levels = [ 'gedadmin' => Auth::PRIV_NONE, diff --git a/app/Http/RequestHandlers/ExportGedcomPage.php b/app/Http/RequestHandlers/ExportGedcomPage.php index d97c1bd56e..d6c222f6e3 100644 --- a/app/Http/RequestHandlers/ExportGedcomPage.php +++ b/app/Http/RequestHandlers/ExportGedcomPage.php @@ -21,12 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function e; use function pathinfo; use function strtolower; @@ -47,9 +46,7 @@ class ExportGedcomPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - + $tree = Validator::attributes($request)->tree(); $title = I18N::translate('Export a GEDCOM file') . ' — ' . e($tree->title()); $this->layout = 'layouts/administration'; diff --git a/app/Http/RequestHandlers/ExportGedcomServer.php b/app/Http/RequestHandlers/ExportGedcomServer.php index 55a3fa4f4d..b4d6e43b79 100644 --- a/app/Http/RequestHandlers/ExportGedcomServer.php +++ b/app/Http/RequestHandlers/ExportGedcomServer.php @@ -25,14 +25,13 @@ use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\GedcomExportService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use League\Flysystem\FilesystemException; use League\Flysystem\UnableToWriteFile; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function fclose; use function pathinfo; use function redirect; @@ -67,8 +66,7 @@ class ExportGedcomServer implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); $data_filesystem = Registry::filesystem()->data(); diff --git a/app/Http/RequestHandlers/FamilyPage.php b/app/Http/RequestHandlers/FamilyPage.php index 7d9fd0a6d1..e48d9b9689 100644 --- a/app/Http/RequestHandlers/FamilyPage.php +++ b/app/Http/RequestHandlers/FamilyPage.php @@ -28,18 +28,16 @@ use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Individual; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\ClipboardService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; use function array_map; -use function assert; use function e; use function explode; use function implode; use function in_array; -use function is_string; use function redirect; use function strip_tags; use function trim; @@ -70,19 +68,14 @@ class FamilyPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); + $slug = Validator::attributes($request)->string('slug', ''); $family = Registry::familyFactory()->make($xref, $tree); $family = Auth::checkFamilyAccess($family, false); // Redirect to correct xref/slug - $slug = Registry::slugFactory()->make($family); - - if ($family->xref() !== $xref || $request->getAttribute('slug') !== $slug) { + if ($family->xref() !== $xref || Registry::slugFactory()->make($family) !== $slug) { return redirect($family->url(), StatusCodeInterface::STATUS_MOVED_PERMANENTLY); } diff --git a/app/Http/RequestHandlers/FindDuplicateRecords.php b/app/Http/RequestHandlers/FindDuplicateRecords.php index 0abd9a6adf..53d8225417 100644 --- a/app/Http/RequestHandlers/FindDuplicateRecords.php +++ b/app/Http/RequestHandlers/FindDuplicateRecords.php @@ -22,12 +22,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Services\AdminService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function e; /** @@ -56,8 +55,7 @@ class FindDuplicateRecords implements RequestHandlerInterface { $this->layout = 'layouts/administration'; - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); $duplicates = $this->admin_service->duplicateRecords($tree); $title = I18N::translate('Find duplicates') . ' — ' . e($tree->title()); diff --git a/app/Http/RequestHandlers/GedcomLoad.php b/app/Http/RequestHandlers/GedcomLoad.php index 1c8bbb279d..2c99ac9566 100644 --- a/app/Http/RequestHandlers/GedcomLoad.php +++ b/app/Http/RequestHandlers/GedcomLoad.php @@ -27,14 +27,13 @@ use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Services\GedcomImportService; use Fisharebest\Webtrees\Services\TimeoutService; use Fisharebest\Webtrees\Services\TreeService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Illuminate\Database\Capsule\Manager as DB; use Illuminate\Database\DetectsConcurrencyErrors; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function preg_split; use function response; use function str_replace; @@ -83,8 +82,7 @@ class GedcomLoad implements RequestHandlerInterface { $this->layout = 'layouts/ajax'; - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); try { // What is the current import status? diff --git a/app/Http/RequestHandlers/GedcomRecordPage.php b/app/Http/RequestHandlers/GedcomRecordPage.php index 22d052eb61..ec3a98754e 100644 --- a/app/Http/RequestHandlers/GedcomRecordPage.php +++ b/app/Http/RequestHandlers/GedcomRecordPage.php @@ -32,14 +32,12 @@ use Fisharebest\Webtrees\Repository; use Fisharebest\Webtrees\Source; use Fisharebest\Webtrees\Submission; use Fisharebest\Webtrees\Submitter; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Illuminate\Support\Collection; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; -use function is_string; use function redirect; /** @@ -72,12 +70,8 @@ class GedcomRecordPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); $record = Registry::gedcomRecordFactory()->make($xref, $tree); $record = Auth::checkRecordAccess($record); diff --git a/app/Http/RequestHandlers/HeaderPage.php b/app/Http/RequestHandlers/HeaderPage.php index 59a6bca12d..ae32286eab 100644 --- a/app/Http/RequestHandlers/HeaderPage.php +++ b/app/Http/RequestHandlers/HeaderPage.php @@ -23,7 +23,7 @@ use Fig\Http\Message\StatusCodeInterface; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Illuminate\Support\Collection; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; @@ -47,19 +47,14 @@ class HeaderPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); + $slug = Validator::attributes($request)->string('slug', ''); $header = Registry::headerFactory()->make($xref, $tree); $header = Auth::checkHeaderAccess($header, false); // Redirect to correct xref/slug - $slug = Registry::slugFactory()->make($header); - - if ($header->xref() !== $xref || $request->getAttribute('slug') !== $slug) { + if ($header->xref() !== $xref || Registry::slugFactory()->make($header) !== $slug) { return redirect($header->url(), StatusCodeInterface::STATUS_MOVED_PERMANENTLY); } diff --git a/app/Http/RequestHandlers/HomePage.php b/app/Http/RequestHandlers/HomePage.php index 1dafe20b91..d5b2e8e909 100644 --- a/app/Http/RequestHandlers/HomePage.php +++ b/app/Http/RequestHandlers/HomePage.php @@ -25,6 +25,7 @@ use Fisharebest\Webtrees\Services\TreeService; use Fisharebest\Webtrees\Site; use Fisharebest\Webtrees\Tree; use Fisharebest\Webtrees\User; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -60,7 +61,7 @@ class HomePage implements RequestHandlerInterface { $default = Site::getPreference('DEFAULT_GEDCOM'); $tree = $this->tree_service->all()->get($default) ?? $this->tree_service->all()->first(); - $user = $request->getAttribute('user'); + $user = Validator::attributes($request)->user(); if ($tree instanceof Tree) { if ($tree->getPreference('imported') === '1') { diff --git a/app/Http/RequestHandlers/ImportGedcomAction.php b/app/Http/RequestHandlers/ImportGedcomAction.php index 343888d290..fa91c5ca27 100644 --- a/app/Http/RequestHandlers/ImportGedcomAction.php +++ b/app/Http/RequestHandlers/ImportGedcomAction.php @@ -24,7 +24,7 @@ use Fisharebest\Webtrees\FlashMessages; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\TreeService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use League\Flysystem\FilesystemException; use League\Flysystem\UnableToReadFile; use Psr\Http\Message\ResponseInterface; @@ -32,7 +32,6 @@ use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Message\StreamFactoryInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function basename; use function redirect; use function route; @@ -63,8 +62,7 @@ class ImportGedcomAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); $data_filesystem = Registry::filesystem()->data(); diff --git a/app/Http/RequestHandlers/ImportGedcomPage.php b/app/Http/RequestHandlers/ImportGedcomPage.php index c411700aaf..8409f2a8b5 100644 --- a/app/Http/RequestHandlers/ImportGedcomPage.php +++ b/app/Http/RequestHandlers/ImportGedcomPage.php @@ -23,12 +23,11 @@ use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\AdminService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function e; /** @@ -57,8 +56,7 @@ class ImportGedcomPage implements RequestHandlerInterface { $this->layout = 'layouts/administration'; - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); $data_filesystem = Registry::filesystem()->data(); $data_folder = Registry::filesystem()->dataName(); diff --git a/app/Http/RequestHandlers/IndividualPage.php b/app/Http/RequestHandlers/IndividualPage.php index 86a236fd8c..37147bd440 100644 --- a/app/Http/RequestHandlers/IndividualPage.php +++ b/app/Http/RequestHandlers/IndividualPage.php @@ -35,7 +35,7 @@ use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\ClipboardService; use Fisharebest\Webtrees\Services\ModuleService; use Fisharebest\Webtrees\Services\UserService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Illuminate\Support\Collection; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; @@ -90,19 +90,14 @@ class IndividualPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); + $slug = Validator::attributes($request)->string('slug', ''); $individual = Registry::individualFactory()->make($xref, $tree); $individual = Auth::checkIndividualAccess($individual); // Redirect to correct xref/slug - $slug = Registry::slugFactory()->make($individual); - - if ($individual->xref() !== $xref || $request->getAttribute('slug') !== $slug) { + if ($individual->xref() !== $xref || Registry::slugFactory()->make($individual) !== $slug) { return redirect($individual->url(), StatusCodeInterface::STATUS_MOVED_PERMANENTLY); } diff --git a/app/Http/RequestHandlers/LinkChildToFamilyAction.php b/app/Http/RequestHandlers/LinkChildToFamilyAction.php index e60e39bccf..5dfcb94774 100644 --- a/app/Http/RequestHandlers/LinkChildToFamilyAction.php +++ b/app/Http/RequestHandlers/LinkChildToFamilyAction.php @@ -21,7 +21,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -42,12 +42,8 @@ class LinkChildToFamilyAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); $individual = Registry::individualFactory()->make($xref, $tree); $individual = Auth::checkIndividualAccess($individual, true); diff --git a/app/Http/RequestHandlers/LinkChildToFamilyPage.php b/app/Http/RequestHandlers/LinkChildToFamilyPage.php index e76e0767f4..fd23c43c09 100644 --- a/app/Http/RequestHandlers/LinkChildToFamilyPage.php +++ b/app/Http/RequestHandlers/LinkChildToFamilyPage.php @@ -23,14 +23,11 @@ use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; -use function is_string; - /** * Link an existing individual as child in an existing family. */ @@ -45,16 +42,11 @@ class LinkChildToFamilyPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); $individual = Registry::individualFactory()->make($xref, $tree); $individual = Auth::checkIndividualAccess($individual, true); - - $title = I18N::translate('Link this individual to an existing family as a child'); + $title = I18N::translate('Link this individual to an existing family as a child'); return $this->viewResponse('edit/link-child-to-family', [ 'individual' => $individual, diff --git a/app/Http/RequestHandlers/LinkMediaToFamilyModal.php b/app/Http/RequestHandlers/LinkMediaToFamilyModal.php index ab6c9705ba..07d11a3a91 100644 --- a/app/Http/RequestHandlers/LinkMediaToFamilyModal.php +++ b/app/Http/RequestHandlers/LinkMediaToFamilyModal.php @@ -21,7 +21,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -41,12 +41,8 @@ class LinkMediaToFamilyModal implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); $media = Registry::mediaFactory()->make($xref, $tree); $media = Auth::checkMediaAccess($media); diff --git a/app/Http/RequestHandlers/LinkMediaToIndividualModal.php b/app/Http/RequestHandlers/LinkMediaToIndividualModal.php index d34c3af77d..156c74a091 100644 --- a/app/Http/RequestHandlers/LinkMediaToIndividualModal.php +++ b/app/Http/RequestHandlers/LinkMediaToIndividualModal.php @@ -21,7 +21,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -41,12 +41,8 @@ class LinkMediaToIndividualModal implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); $media = Registry::mediaFactory()->make($xref, $tree); $media = Auth::checkMediaAccess($media); diff --git a/app/Http/RequestHandlers/LinkMediaToRecordAction.php b/app/Http/RequestHandlers/LinkMediaToRecordAction.php index 124101af0c..4cdb4f0c8c 100644 --- a/app/Http/RequestHandlers/LinkMediaToRecordAction.php +++ b/app/Http/RequestHandlers/LinkMediaToRecordAction.php @@ -21,7 +21,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -41,12 +41,8 @@ class LinkMediaToRecordAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); $params = (array) $request->getParsedBody(); $link = $params['link'] ?? ''; diff --git a/app/Http/RequestHandlers/LinkMediaToSourceModal.php b/app/Http/RequestHandlers/LinkMediaToSourceModal.php index 55fff0c5bb..0a5d18d03f 100644 --- a/app/Http/RequestHandlers/LinkMediaToSourceModal.php +++ b/app/Http/RequestHandlers/LinkMediaToSourceModal.php @@ -21,7 +21,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -41,12 +41,8 @@ class LinkMediaToSourceModal implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); $media = Registry::mediaFactory()->make($xref, $tree); $media = Auth::checkMediaAccess($media); diff --git a/app/Http/RequestHandlers/LinkSpouseToIndividualAction.php b/app/Http/RequestHandlers/LinkSpouseToIndividualAction.php index d8c76b1f42..c059666ed0 100644 --- a/app/Http/RequestHandlers/LinkSpouseToIndividualAction.php +++ b/app/Http/RequestHandlers/LinkSpouseToIndividualAction.php @@ -22,7 +22,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\GedcomEditService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -55,12 +55,8 @@ class LinkSpouseToIndividualAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); $individual = Registry::individualFactory()->make($xref, $tree); $individual = Auth::checkIndividualAccess($individual, true); diff --git a/app/Http/RequestHandlers/LinkSpouseToIndividualPage.php b/app/Http/RequestHandlers/LinkSpouseToIndividualPage.php index 375c753c8e..70b3ca1a58 100644 --- a/app/Http/RequestHandlers/LinkSpouseToIndividualPage.php +++ b/app/Http/RequestHandlers/LinkSpouseToIndividualPage.php @@ -25,7 +25,7 @@ use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\GedcomEditService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -59,12 +59,8 @@ class LinkSpouseToIndividualPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); $individual = Registry::individualFactory()->make($xref, $tree); $individual = Auth::checkIndividualAccess($individual, true); diff --git a/app/Http/RequestHandlers/LocationPage.php b/app/Http/RequestHandlers/LocationPage.php index 39ec3fb4e9..4f53815e84 100644 --- a/app/Http/RequestHandlers/LocationPage.php +++ b/app/Http/RequestHandlers/LocationPage.php @@ -23,7 +23,7 @@ use Fig\Http\Message\StatusCodeInterface; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Illuminate\Support\Collection; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; @@ -47,19 +47,14 @@ class LocationPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); + $slug = Validator::attributes($request)->string('slug', ''); $record = Registry::locationFactory()->make($xref, $tree); $record = Auth::checkLocationAccess($record, false); // Redirect to correct xref/slug - $slug = Registry::slugFactory()->make($record); - - if ($record->xref() !== $xref || $request->getAttribute('slug') !== $slug) { + if ($record->xref() !== $xref || Registry::slugFactory()->make($record) !== $slug) { return redirect($record->url(), StatusCodeInterface::STATUS_MOVED_PERMANENTLY); } diff --git a/app/Http/RequestHandlers/LoginAction.php b/app/Http/RequestHandlers/LoginAction.php index 337dc59ff1..26aab30ba5 100644 --- a/app/Http/RequestHandlers/LoginAction.php +++ b/app/Http/RequestHandlers/LoginAction.php @@ -67,12 +67,12 @@ class LoginAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - $base_url = $request->getAttribute('base_url'); + $tree = Validator::attributes($request)->treeOptional(); + $base_url = Validator::attributes($request)->string('base_url'); $default_url = route(HomePage::class); - $username = Validator::parsedBody($request)->string('username') ?? ''; - $password = Validator::parsedBody($request)->string('password') ?? ''; - $url = Validator::parsedBody($request)->isLocalUrl($base_url)->string('url') ?? $default_url; + $username = Validator::parsedBody($request)->optionalString('username') ?? ''; + $password = Validator::parsedBody($request)->optionalString('password') ?? ''; + $url = Validator::parsedBody($request)->isLocalUrl($base_url)->optionalString('url') ?? $default_url; try { $this->doLogin($username, $password); diff --git a/app/Http/RequestHandlers/LoginPage.php b/app/Http/RequestHandlers/LoginPage.php index 9976f3447c..b7a4dd48e2 100644 --- a/app/Http/RequestHandlers/LoginPage.php +++ b/app/Http/RequestHandlers/LoginPage.php @@ -25,6 +25,7 @@ use Fisharebest\Webtrees\Services\TreeService; use Fisharebest\Webtrees\Site; use Fisharebest\Webtrees\Tree; use Fisharebest\Webtrees\User; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -55,8 +56,8 @@ class LoginPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - $user = $request->getAttribute('user'); + $tree = Validator::attributes($request)->treeOptional(); + $user = Validator::attributes($request)->user(); // Already logged in? if ($user instanceof User) { diff --git a/app/Http/RequestHandlers/Logout.php b/app/Http/RequestHandlers/Logout.php index de3f410016..74543400df 100644 --- a/app/Http/RequestHandlers/Logout.php +++ b/app/Http/RequestHandlers/Logout.php @@ -24,6 +24,7 @@ use Fisharebest\Webtrees\FlashMessages; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Log; use Fisharebest\Webtrees\User; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -43,7 +44,7 @@ class Logout implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $user = $request->getAttribute('user'); + $user = Validator::attributes($request)->user(); if ($user instanceof User) { Log::addAuthenticationLog('Logout: ' . Auth::user()->userName() . '/' . Auth::user()->realName()); diff --git a/app/Http/RequestHandlers/ManageTrees.php b/app/Http/RequestHandlers/ManageTrees.php index b431e07355..0b1099b78d 100644 --- a/app/Http/RequestHandlers/ManageTrees.php +++ b/app/Http/RequestHandlers/ManageTrees.php @@ -26,6 +26,7 @@ use Fisharebest\Webtrees\Services\AdminService; use Fisharebest\Webtrees\Services\TreeService; use Fisharebest\Webtrees\Site; use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -60,7 +61,7 @@ class ManageTrees implements RequestHandlerInterface { $this->layout = 'layouts/administration'; - $tree = $request->getAttribute('tree'); + $tree = Validator::attributes($request)->treeOptional(); $multiple_tree_threshold = $this->admin_service->multipleTreeThreshold(); $gedcom_file_count = $this->admin_service->gedcomFiles(Registry::filesystem()->data())->count(); diff --git a/app/Http/RequestHandlers/Masquerade.php b/app/Http/RequestHandlers/Masquerade.php index 7a226309be..3c6494ca18 100644 --- a/app/Http/RequestHandlers/Masquerade.php +++ b/app/Http/RequestHandlers/Masquerade.php @@ -24,6 +24,7 @@ use Fisharebest\Webtrees\Http\Exceptions\HttpNotFoundException; use Fisharebest\Webtrees\Log; use Fisharebest\Webtrees\Services\UserService; use Fisharebest\Webtrees\Session; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -52,14 +53,14 @@ class Masquerade implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $user_id = (int) $request->getAttribute('user_id'); + $user_id = Validator::attributes($request)->integer('user_id'); $user = $this->user_service->find($user_id); if ($user === null) { throw new HttpNotFoundException('User ID ' . $user_id . ' not found'); } - if ($request->getAttribute('user')->id() !== $user_id) { + if (Validator::attributes($request)->user()->id() !== $user_id) { Log::addAuthenticationLog('Masquerade as user: ' . $user->userName()); Auth::login($user); Session::put('masquerade', '1'); diff --git a/app/Http/RequestHandlers/MediaFileDownload.php b/app/Http/RequestHandlers/MediaFileDownload.php index 1b4761d834..66557a992f 100644 --- a/app/Http/RequestHandlers/MediaFileDownload.php +++ b/app/Http/RequestHandlers/MediaFileDownload.php @@ -21,9 +21,8 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fig\Http\Message\StatusCodeInterface; use Fisharebest\Webtrees\Auth; -use Fisharebest\Webtrees\Contracts\UserInterface; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -45,11 +44,8 @@ class MediaFileDownload implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $user = $request->getAttribute('user'); - assert($user instanceof UserInterface); + $tree = Validator::attributes($request)->tree(); + $user = Validator::attributes($request)->user(); $image_factory = Registry::imageFactory(); diff --git a/app/Http/RequestHandlers/MediaFileThumbnail.php b/app/Http/RequestHandlers/MediaFileThumbnail.php index 11a3f41424..c321261a4c 100644 --- a/app/Http/RequestHandlers/MediaFileThumbnail.php +++ b/app/Http/RequestHandlers/MediaFileThumbnail.php @@ -20,14 +20,12 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fig\Http\Message\StatusCodeInterface; -use Fisharebest\Webtrees\Contracts\UserInterface; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function redirect; /** @@ -44,11 +42,8 @@ class MediaFileThumbnail implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $user = $request->getAttribute('user'); - assert($user instanceof UserInterface); + $tree = Validator::attributes($request)->tree(); + $user = Validator::attributes($request)->user(); $params = $request->getQueryParams(); $xref = $params['xref'] ?? ''; diff --git a/app/Http/RequestHandlers/MediaPage.php b/app/Http/RequestHandlers/MediaPage.php index 2f4e616125..94c63f9e13 100644 --- a/app/Http/RequestHandlers/MediaPage.php +++ b/app/Http/RequestHandlers/MediaPage.php @@ -24,7 +24,7 @@ use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\ClipboardService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -61,19 +61,14 @@ class MediaPage implements RequestHandlerInterface { $data_filesystem = Registry::filesystem()->data(); - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); + $slug = Validator::attributes($request)->string('slug', ''); $record = Registry::mediaFactory()->make($xref, $tree); $record = Auth::checkMediaAccess($record); // Redirect to correct xref/slug - $slug = Registry::slugFactory()->make($record); - - if ($record->xref() !== $xref || $request->getAttribute('slug') !== $slug) { + if ($record->xref() !== $xref || Registry::slugFactory()->make($record) !== $slug) { return redirect($record->url(), StatusCodeInterface::STATUS_MOVED_PERMANENTLY); } diff --git a/app/Http/RequestHandlers/MergeFactsAction.php b/app/Http/RequestHandlers/MergeFactsAction.php index dbd7274e8c..2c02774065 100644 --- a/app/Http/RequestHandlers/MergeFactsAction.php +++ b/app/Http/RequestHandlers/MergeFactsAction.php @@ -24,14 +24,13 @@ use Fisharebest\Webtrees\Contracts\UserInterface; use Fisharebest\Webtrees\FlashMessages; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Illuminate\Database\Capsule\Manager as DB; use Illuminate\Database\Query\Expression; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function e; use function in_array; use function preg_replace; @@ -51,8 +50,7 @@ class MergeFactsAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); $params = (array) $request->getParsedBody(); diff --git a/app/Http/RequestHandlers/MergeFactsPage.php b/app/Http/RequestHandlers/MergeFactsPage.php index ebc410348d..875b8ff067 100644 --- a/app/Http/RequestHandlers/MergeFactsPage.php +++ b/app/Http/RequestHandlers/MergeFactsPage.php @@ -22,12 +22,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function redirect; /** @@ -48,8 +47,7 @@ class MergeFactsPage implements RequestHandlerInterface { $this->layout = 'layouts/administration'; - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); $xref1 = $request->getQueryParams()['xref1'] ?? ''; $xref2 = $request->getQueryParams()['xref2'] ?? ''; diff --git a/app/Http/RequestHandlers/MergeRecordsAction.php b/app/Http/RequestHandlers/MergeRecordsAction.php index d33e62d703..82dae6e3cd 100644 --- a/app/Http/RequestHandlers/MergeRecordsAction.php +++ b/app/Http/RequestHandlers/MergeRecordsAction.php @@ -20,12 +20,11 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function redirect; use function route; @@ -41,8 +40,7 @@ class MergeRecordsAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); $params = (array) $request->getParsedBody(); diff --git a/app/Http/RequestHandlers/MergeRecordsPage.php b/app/Http/RequestHandlers/MergeRecordsPage.php index ea73093757..99521c5ae3 100644 --- a/app/Http/RequestHandlers/MergeRecordsPage.php +++ b/app/Http/RequestHandlers/MergeRecordsPage.php @@ -30,12 +30,11 @@ use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Repository; use Fisharebest\Webtrees\Source; use Fisharebest\Webtrees\Submitter; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function e; /** @@ -56,9 +55,7 @@ class MergeRecordsPage implements RequestHandlerInterface { $this->layout = 'layouts/administration'; - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - + $tree = Validator::attributes($request)->tree(); $xref1 = $request->getQueryParams()['xref1'] ?? ''; $xref2 = $request->getQueryParams()['xref2'] ?? ''; diff --git a/app/Http/RequestHandlers/MessageAction.php b/app/Http/RequestHandlers/MessageAction.php index b5e5bba60d..fe3709cce2 100644 --- a/app/Http/RequestHandlers/MessageAction.php +++ b/app/Http/RequestHandlers/MessageAction.php @@ -26,13 +26,11 @@ use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Services\MessageService; use Fisharebest\Webtrees\Services\UserService; -use Fisharebest\Webtrees\Tree; use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function e; use function redirect; use function route; @@ -67,18 +65,16 @@ class MessageAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $user = $request->getAttribute('user'); + $tree = Validator::attributes($request)->tree(); + $user = Validator::attributes($request)->user(); $params = (array) $request->getParsedBody(); $body = $params['body']; $subject = $params['subject']; $to = $params['to']; $to_user = $this->user_service->findByUserName($to); - $ip = $request->getAttribute('client-ip'); - $base_url = $request->getAttribute('base_url'); - $url = Validator::parsedBody($request)->isLocalUrl($base_url)->string('url') ?? $base_url; + $ip = Validator::attributes($request)->string('client-ip'); + $base_url = Validator::attributes($request)->string('base_url'); + $url = Validator::parsedBody($request)->isLocalUrl($base_url)->optionalString('url') ?? $base_url; if ($to_user === null || $to_user->getPreference(UserInterface::PREF_CONTACT_METHOD) === 'none') { throw new HttpAccessDeniedException('Invalid contact user id'); diff --git a/app/Http/RequestHandlers/MessagePage.php b/app/Http/RequestHandlers/MessagePage.php index f16e0f123c..cf93885df1 100644 --- a/app/Http/RequestHandlers/MessagePage.php +++ b/app/Http/RequestHandlers/MessagePage.php @@ -24,12 +24,11 @@ use Fisharebest\Webtrees\Http\Exceptions\HttpAccessDeniedException; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Services\UserService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function route; /** @@ -58,10 +57,8 @@ class MessagePage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $user = $request->getAttribute('user'); + $tree = Validator::attributes($request)->tree(); + $user = Validator::attributes($request)->user(); $body = $request->getQueryParams()['body'] ?? ''; $subject = $request->getQueryParams()['subject'] ?? ''; $to = $request->getQueryParams()['to'] ?? ''; diff --git a/app/Http/RequestHandlers/MessageSelect.php b/app/Http/RequestHandlers/MessageSelect.php index d314823692..2bb74efef3 100644 --- a/app/Http/RequestHandlers/MessageSelect.php +++ b/app/Http/RequestHandlers/MessageSelect.php @@ -19,7 +19,7 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -36,9 +36,7 @@ class MessageSelect implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - + $tree = Validator::attributes($request)->tree(); $params = (array) $request->getParsedBody(); return redirect(route(MessagePage::class, [ diff --git a/app/Http/RequestHandlers/ModuleAction.php b/app/Http/RequestHandlers/ModuleAction.php index 7bc6de28bb..58f38676db 100644 --- a/app/Http/RequestHandlers/ModuleAction.php +++ b/app/Http/RequestHandlers/ModuleAction.php @@ -24,6 +24,7 @@ use Fisharebest\Webtrees\Contracts\UserInterface; use Fisharebest\Webtrees\Http\Exceptions\HttpAccessDeniedException; use Fisharebest\Webtrees\Http\Exceptions\HttpNotFoundException; use Fisharebest\Webtrees\Services\ModuleService; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -59,8 +60,7 @@ class ModuleAction implements RequestHandlerInterface { $module_name = $request->getAttribute('module'); $action = $request->getAttribute('action'); - $user = $request->getAttribute('user'); - assert($user instanceof UserInterface); + $user = Validator::attributes($request)->user(); // Check that the module is enabled. // The module itself will need to check any tree-level access, diff --git a/app/Http/RequestHandlers/NotePage.php b/app/Http/RequestHandlers/NotePage.php index 62f3c4b8a3..024eb7a002 100644 --- a/app/Http/RequestHandlers/NotePage.php +++ b/app/Http/RequestHandlers/NotePage.php @@ -24,7 +24,7 @@ use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\ClipboardService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -59,19 +59,14 @@ class NotePage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); + $slug = Validator::attributes($request)->string('slug', ''); $record = Registry::noteFactory()->make($xref, $tree); $record = Auth::checkNoteAccess($record, false); // Redirect to correct xref/slug - $slug = Registry::slugFactory()->make($record); - - if ($record->xref() !== $xref || $request->getAttribute('slug') !== $slug) { + if ($record->xref() !== $xref || Registry::slugFactory()->make($record) !== $slug) { return redirect($record->url(), StatusCodeInterface::STATUS_MOVED_PERMANENTLY); } diff --git a/app/Http/RequestHandlers/PasswordRequestAction.php b/app/Http/RequestHandlers/PasswordRequestAction.php index 2960362fd3..8c99b6ce0e 100644 --- a/app/Http/RequestHandlers/PasswordRequestAction.php +++ b/app/Http/RequestHandlers/PasswordRequestAction.php @@ -29,6 +29,7 @@ use Fisharebest\Webtrees\Services\UserService; use Fisharebest\Webtrees\SiteUser; use Fisharebest\Webtrees\Tree; use Fisharebest\Webtrees\User; +use Fisharebest\Webtrees\Validator; use Illuminate\Support\Str; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; @@ -83,7 +84,7 @@ class PasswordRequestAction implements RequestHandlerInterface, StatusCodeInterf */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); + $tree = Validator::attributes($request)->treeOptional(); $params = (array) $request->getParsedBody(); diff --git a/app/Http/RequestHandlers/PasswordRequestPage.php b/app/Http/RequestHandlers/PasswordRequestPage.php index 4d19a8daf8..9152174571 100644 --- a/app/Http/RequestHandlers/PasswordRequestPage.php +++ b/app/Http/RequestHandlers/PasswordRequestPage.php @@ -23,6 +23,7 @@ use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Tree; use Fisharebest\Webtrees\User; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -44,8 +45,8 @@ class PasswordRequestPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - $user = $request->getAttribute('user'); + $tree = Validator::attributes($request)->treeOptional(); + $user = Validator::attributes($request)->user(); // Already logged in? if ($user instanceof User) { diff --git a/app/Http/RequestHandlers/PasswordResetAction.php b/app/Http/RequestHandlers/PasswordResetAction.php index b60b63bc46..67804a4db5 100644 --- a/app/Http/RequestHandlers/PasswordResetAction.php +++ b/app/Http/RequestHandlers/PasswordResetAction.php @@ -27,6 +27,7 @@ use Fisharebest\Webtrees\Log; use Fisharebest\Webtrees\Services\UserService; use Fisharebest\Webtrees\Tree; use Fisharebest\Webtrees\User; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -55,7 +56,7 @@ class PasswordResetAction implements RequestHandlerInterface, StatusCodeInterfac */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); + $tree = Validator::attributes($request)->treeOptional(); $token = $request->getAttribute('token'); $user = $this->user_service->findByToken($token); diff --git a/app/Http/RequestHandlers/PasswordResetPage.php b/app/Http/RequestHandlers/PasswordResetPage.php index 575de5fea6..20afa8af31 100644 --- a/app/Http/RequestHandlers/PasswordResetPage.php +++ b/app/Http/RequestHandlers/PasswordResetPage.php @@ -26,6 +26,7 @@ use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Services\UserService; use Fisharebest\Webtrees\Tree; use Fisharebest\Webtrees\User; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -58,7 +59,7 @@ class PasswordResetPage implements RequestHandlerInterface, StatusCodeInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); + $tree = Validator::attributes($request)->treeOptional(); $token = $request->getAttribute('token'); $title = I18N::translate('Set a new password'); $user = $this->user_service->findByToken($token); diff --git a/app/Http/RequestHandlers/PasteFact.php b/app/Http/RequestHandlers/PasteFact.php index a45b7dc77d..9c2fdad0c5 100644 --- a/app/Http/RequestHandlers/PasteFact.php +++ b/app/Http/RequestHandlers/PasteFact.php @@ -22,7 +22,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\ClipboardService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -57,14 +57,9 @@ class PasteFact implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - - $params = (array) $request->getParsedBody(); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); + $params = (array) $request->getParsedBody(); $fact_id = $params['fact_id']; $record = Registry::gedcomRecordFactory()->make($xref, $tree); $record = Auth::checkRecordAccess($record, true); diff --git a/app/Http/RequestHandlers/PendingChanges.php b/app/Http/RequestHandlers/PendingChanges.php index bacdc2ac33..2ed1d1677d 100644 --- a/app/Http/RequestHandlers/PendingChanges.php +++ b/app/Http/RequestHandlers/PendingChanges.php @@ -22,12 +22,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Services\PendingChangesService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function route; /** @@ -59,8 +58,7 @@ class PendingChanges implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); $n = (int) ($request->getQueryParams()['n'] ?? self::MAX_CHANGES); diff --git a/app/Http/RequestHandlers/PendingChangesAcceptChange.php b/app/Http/RequestHandlers/PendingChangesAcceptChange.php index bdf2b0710e..542436ee8a 100644 --- a/app/Http/RequestHandlers/PendingChangesAcceptChange.php +++ b/app/Http/RequestHandlers/PendingChangesAcceptChange.php @@ -22,7 +22,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\GedcomRecord; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\PendingChangesService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -53,12 +53,8 @@ class PendingChangesAcceptChange implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); $record = Registry::gedcomRecordFactory()->make($xref, $tree); $change = $request->getAttribute('change'); diff --git a/app/Http/RequestHandlers/PendingChangesAcceptRecord.php b/app/Http/RequestHandlers/PendingChangesAcceptRecord.php index e624dd27dc..2074cba16c 100644 --- a/app/Http/RequestHandlers/PendingChangesAcceptRecord.php +++ b/app/Http/RequestHandlers/PendingChangesAcceptRecord.php @@ -23,12 +23,11 @@ use Fisharebest\Webtrees\FlashMessages; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\PendingChangesService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function response; /** @@ -53,10 +52,8 @@ class PendingChangesAcceptRecord implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref') ?? ''; + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref', ''); $record = Registry::gedcomRecordFactory()->make($xref, $tree); if ($record) { diff --git a/app/Http/RequestHandlers/PendingChangesAcceptTree.php b/app/Http/RequestHandlers/PendingChangesAcceptTree.php index 96fe760cd8..62294be4b1 100644 --- a/app/Http/RequestHandlers/PendingChangesAcceptTree.php +++ b/app/Http/RequestHandlers/PendingChangesAcceptTree.php @@ -22,12 +22,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\FlashMessages; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Services\PendingChangesService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function e; use function response; @@ -55,8 +54,7 @@ class PendingChangesAcceptTree implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); $n = (int) ($request->getQueryParams()['n'] ?? PHP_INT_MAX); diff --git a/app/Http/RequestHandlers/PendingChangesLogData.php b/app/Http/RequestHandlers/PendingChangesLogData.php index 4bbbe9566a..bff8f232e3 100644 --- a/app/Http/RequestHandlers/PendingChangesLogData.php +++ b/app/Http/RequestHandlers/PendingChangesLogData.php @@ -25,7 +25,7 @@ use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\DatatablesService; use Fisharebest\Webtrees\Services\PendingChangesService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -68,9 +68,7 @@ class PendingChangesLogData implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - + $tree = Validator::attributes($request)->tree(); $params = $request->getQueryParams(); $params['tree'] = $tree->name(); diff --git a/app/Http/RequestHandlers/PendingChangesLogDelete.php b/app/Http/RequestHandlers/PendingChangesLogDelete.php index 3f12d53051..af75b0c105 100644 --- a/app/Http/RequestHandlers/PendingChangesLogDelete.php +++ b/app/Http/RequestHandlers/PendingChangesLogDelete.php @@ -20,12 +20,11 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Services\PendingChangesService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function response; /** @@ -50,9 +49,7 @@ class PendingChangesLogDelete implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - + $tree = Validator::attributes($request)->tree(); $params = $request->getQueryParams(); $params['tree'] = $tree->name(); diff --git a/app/Http/RequestHandlers/PendingChangesLogDownload.php b/app/Http/RequestHandlers/PendingChangesLogDownload.php index cf5c4b7df8..f3676cf14e 100644 --- a/app/Http/RequestHandlers/PendingChangesLogDownload.php +++ b/app/Http/RequestHandlers/PendingChangesLogDownload.php @@ -21,12 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fig\Http\Message\StatusCodeInterface; use Fisharebest\Webtrees\Services\PendingChangesService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function response; /** @@ -51,9 +50,7 @@ class PendingChangesLogDownload implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - + $tree = Validator::attributes($request)->tree(); $params = $request->getQueryParams(); $params['tree'] = $tree->name(); diff --git a/app/Http/RequestHandlers/PendingChangesLogPage.php b/app/Http/RequestHandlers/PendingChangesLogPage.php index e852d6b2f4..5d0af5c717 100644 --- a/app/Http/RequestHandlers/PendingChangesLogPage.php +++ b/app/Http/RequestHandlers/PendingChangesLogPage.php @@ -24,7 +24,7 @@ use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\TreeService; use Fisharebest\Webtrees\Services\UserService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Illuminate\Database\Capsule\Manager as DB; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; @@ -60,12 +60,10 @@ class PendingChangesLogPage implements RequestHandlerInterface { $this->layout = 'layouts/administration'; - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - + $tree = Validator::attributes($request)->tree(); $trees = $this->tree_service->titles(); - $users = ['' => '']; + foreach ($this->user_service->all() as $user) { $user_name = $user->userName(); $users[$user_name] = $user_name; diff --git a/app/Http/RequestHandlers/PendingChangesRejectChange.php b/app/Http/RequestHandlers/PendingChangesRejectChange.php index 1c594b9366..4732a7929a 100644 --- a/app/Http/RequestHandlers/PendingChangesRejectChange.php +++ b/app/Http/RequestHandlers/PendingChangesRejectChange.php @@ -22,7 +22,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\GedcomRecord; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\PendingChangesService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -53,12 +53,8 @@ class PendingChangesRejectChange implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); $record = Registry::gedcomRecordFactory()->make($xref, $tree); $change = $request->getAttribute('change'); diff --git a/app/Http/RequestHandlers/PendingChangesRejectRecord.php b/app/Http/RequestHandlers/PendingChangesRejectRecord.php index bbdfc93fb7..dd412f46ab 100644 --- a/app/Http/RequestHandlers/PendingChangesRejectRecord.php +++ b/app/Http/RequestHandlers/PendingChangesRejectRecord.php @@ -24,12 +24,11 @@ use Fisharebest\Webtrees\GedcomRecord; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\PendingChangesService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function response; /** @@ -54,10 +53,8 @@ class PendingChangesRejectRecord implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref') ?? ''; + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref', ''); $record = Registry::gedcomRecordFactory()->make($xref, $tree); if ($record instanceof GedcomRecord) { diff --git a/app/Http/RequestHandlers/PendingChangesRejectTree.php b/app/Http/RequestHandlers/PendingChangesRejectTree.php index e55b0d7cba..de19547ca2 100644 --- a/app/Http/RequestHandlers/PendingChangesRejectTree.php +++ b/app/Http/RequestHandlers/PendingChangesRejectTree.php @@ -22,12 +22,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\FlashMessages; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Services\PendingChangesService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function e; use function response; @@ -53,8 +52,7 @@ class PendingChangesRejectTree implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); $this->pending_changes_service->rejectTree($tree); diff --git a/app/Http/RequestHandlers/RedirectDescendencyPhp.php b/app/Http/RequestHandlers/RedirectDescendencyPhp.php index e81899957d..bd18fb9691 100644 --- a/app/Http/RequestHandlers/RedirectDescendencyPhp.php +++ b/app/Http/RequestHandlers/RedirectDescendencyPhp.php @@ -22,7 +22,6 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fig\Http\Message\StatusCodeInterface; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Http\Exceptions\HttpNotFoundException; -use Fisharebest\Webtrees\Module\AncestorsChartModule; use Fisharebest\Webtrees\Module\DescendancyChartModule; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\ModuleService; diff --git a/app/Http/RequestHandlers/RedirectFamilyPhp.php b/app/Http/RequestHandlers/RedirectFamilyPhp.php index bafe1db2ea..188d0e936f 100644 --- a/app/Http/RequestHandlers/RedirectFamilyPhp.php +++ b/app/Http/RequestHandlers/RedirectFamilyPhp.php @@ -56,8 +56,8 @@ class RedirectFamilyPhp implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $ged = Validator::queryParams($request)->requiredString('ged'); - $famid = Validator::queryParams($request)->isXref()->requiredString('famid'); + $ged = Validator::queryParams($request)->string('ged'); + $famid = Validator::queryParams($request)->isXref()->string('famid'); $tree = $this->tree_service->all()->get($ged); if ($tree instanceof Tree) { diff --git a/app/Http/RequestHandlers/RedirectGedRecordPhp.php b/app/Http/RequestHandlers/RedirectGedRecordPhp.php index a7a6ee541e..8d92abd503 100644 --- a/app/Http/RequestHandlers/RedirectGedRecordPhp.php +++ b/app/Http/RequestHandlers/RedirectGedRecordPhp.php @@ -56,8 +56,8 @@ class RedirectGedRecordPhp implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $ged = Validator::queryParams($request)->requiredString('ged'); - $pid = Validator::queryParams($request)->isXref()->requiredString('pid'); + $ged = Validator::queryParams($request)->string('ged'); + $pid = Validator::queryParams($request)->isXref()->string('pid'); $tree = $this->tree_service->all()->get($ged); if ($tree instanceof Tree) { diff --git a/app/Http/RequestHandlers/RedirectIndividualPhp.php b/app/Http/RequestHandlers/RedirectIndividualPhp.php index 0c1c96a370..a2d55a6dd9 100644 --- a/app/Http/RequestHandlers/RedirectIndividualPhp.php +++ b/app/Http/RequestHandlers/RedirectIndividualPhp.php @@ -56,8 +56,8 @@ class RedirectIndividualPhp implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $ged = Validator::queryParams($request)->requiredString('ged'); - $pid = Validator::queryParams($request)->isXref()->requiredString('pid'); + $ged = Validator::queryParams($request)->string('ged'); + $pid = Validator::queryParams($request)->isXref()->string('pid'); $tree = $this->tree_service->all()->get($ged); if ($tree instanceof Tree) { diff --git a/app/Http/RequestHandlers/RedirectMediaViewerPhp.php b/app/Http/RequestHandlers/RedirectMediaViewerPhp.php index 65eb223370..b52d46bac6 100644 --- a/app/Http/RequestHandlers/RedirectMediaViewerPhp.php +++ b/app/Http/RequestHandlers/RedirectMediaViewerPhp.php @@ -56,8 +56,8 @@ class RedirectMediaViewerPhp implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $ged = Validator::queryParams($request)->requiredString('ged'); - $mid = Validator::queryParams($request)->isXref()->requiredString('mid'); + $ged = Validator::queryParams($request)->string('ged'); + $mid = Validator::queryParams($request)->isXref()->string('mid'); $tree = $this->tree_service->all()->get($ged); if ($tree instanceof Tree) { diff --git a/app/Http/RequestHandlers/RedirectModulePhp.php b/app/Http/RequestHandlers/RedirectModulePhp.php index 87f003fc42..f906f128d7 100644 --- a/app/Http/RequestHandlers/RedirectModulePhp.php +++ b/app/Http/RequestHandlers/RedirectModulePhp.php @@ -34,7 +34,6 @@ use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; use function redirect; -use function route; /** * Redirect URLs created by webtrees 1.x (and PhpGedView). diff --git a/app/Http/RequestHandlers/RedirectNotePhp.php b/app/Http/RequestHandlers/RedirectNotePhp.php index 7006e60dcb..8117e9e73c 100644 --- a/app/Http/RequestHandlers/RedirectNotePhp.php +++ b/app/Http/RequestHandlers/RedirectNotePhp.php @@ -56,8 +56,8 @@ class RedirectNotePhp implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $ged = Validator::queryParams($request)->requiredString('ged'); - $nid = Validator::queryParams($request)->isXref()->requiredString('nid'); + $ged = Validator::queryParams($request)->string('ged'); + $nid = Validator::queryParams($request)->isXref()->string('nid'); $tree = $this->tree_service->all()->get($ged); if ($tree instanceof Tree) { diff --git a/app/Http/RequestHandlers/RedirectRelationshipPhp.php b/app/Http/RequestHandlers/RedirectRelationshipPhp.php index f88324a69c..fcd047bffb 100644 --- a/app/Http/RequestHandlers/RedirectRelationshipPhp.php +++ b/app/Http/RequestHandlers/RedirectRelationshipPhp.php @@ -22,7 +22,6 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fig\Http\Message\StatusCodeInterface; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Http\Exceptions\HttpNotFoundException; -use Fisharebest\Webtrees\Module\PedigreeChartModule; use Fisharebest\Webtrees\Module\RelationshipsChartModule; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\ModuleService; diff --git a/app/Http/RequestHandlers/RedirectRepositoryPhp.php b/app/Http/RequestHandlers/RedirectRepositoryPhp.php index be94daeff0..e7e1ae4a59 100644 --- a/app/Http/RequestHandlers/RedirectRepositoryPhp.php +++ b/app/Http/RequestHandlers/RedirectRepositoryPhp.php @@ -56,8 +56,8 @@ class RedirectRepositoryPhp implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $ged = Validator::queryParams($request)->requiredString('ged'); - $rid = Validator::queryParams($request)->isXref()->requiredString('rid'); + $ged = Validator::queryParams($request)->string('ged'); + $rid = Validator::queryParams($request)->isXref()->string('rid'); $tree = $this->tree_service->all()->get($ged); if ($tree instanceof Tree) { diff --git a/app/Http/RequestHandlers/RedirectSourcePhp.php b/app/Http/RequestHandlers/RedirectSourcePhp.php index e4a7410d41..29b8acfc15 100644 --- a/app/Http/RequestHandlers/RedirectSourcePhp.php +++ b/app/Http/RequestHandlers/RedirectSourcePhp.php @@ -56,8 +56,8 @@ class RedirectSourcePhp implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $ged = Validator::queryParams($request)->requiredString('ged'); - $sid = Validator::queryParams($request)->isXref()->requiredString('sid'); + $ged = Validator::queryParams($request)->string('ged'); + $sid = Validator::queryParams($request)->isXref()->string('sid'); $tree = $this->tree_service->all()->get($ged); if ($tree instanceof Tree) { diff --git a/app/Http/RequestHandlers/RegisterAction.php b/app/Http/RequestHandlers/RegisterAction.php index 8da9f51591..210771e602 100644 --- a/app/Http/RequestHandlers/RegisterAction.php +++ b/app/Http/RequestHandlers/RegisterAction.php @@ -36,6 +36,7 @@ use Fisharebest\Webtrees\Site; use Fisharebest\Webtrees\SiteUser; use Fisharebest\Webtrees\Tree; use Fisharebest\Webtrees\TreeUser; +use Fisharebest\Webtrees\Validator; use Illuminate\Database\Capsule\Manager as DB; use Illuminate\Support\Str; use Psr\Http\Message\ResponseInterface; @@ -88,7 +89,7 @@ class RegisterAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); + $tree = Validator::attributes($request)->treeOptional(); $this->checkRegistrationAllowed(); @@ -142,7 +143,7 @@ class RegisterAction implements RequestHandlerInterface $user->setPreference(UserInterface::PREF_IS_ADMINISTRATOR, ''); $user->setPreference(UserInterface::PREF_TIMESTAMP_ACTIVE, '0'); - $base_url = $request->getAttribute('base_url'); + $base_url = Validator::attributes($request)->string('base_url'); $reply_to = $tree instanceof Tree ? new TreeUser($tree) : new SiteUser(); $verify_url = route(VerifyEmail::class, [ @@ -258,7 +259,7 @@ class RegisterAction implements RequestHandlerInterface throw new Exception(I18N::translate('Duplicate email address. A user with that email already exists.')); } - $base_url = $request->getAttribute('base_url'); + $base_url = Validator::attributes($request)->string('base_url'); // No external links if (preg_match('/(?!' . preg_quote($base_url, '/') . ')(((?:http|https):\/\/)[a-zA-Z0-9.-]+)/', $comments, $match)) { diff --git a/app/Http/RequestHandlers/RegisterPage.php b/app/Http/RequestHandlers/RegisterPage.php index c77e2796d9..cffcae3d78 100644 --- a/app/Http/RequestHandlers/RegisterPage.php +++ b/app/Http/RequestHandlers/RegisterPage.php @@ -25,6 +25,7 @@ use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Services\CaptchaService; use Fisharebest\Webtrees\Session; use Fisharebest\Webtrees\Site; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -59,7 +60,7 @@ class RegisterPage implements RequestHandlerInterface { $this->checkRegistrationAllowed(); - $tree = $request->getAttribute('tree'); + $tree = Validator::attributes($request)->treeOptional(); $comments = Session::get('register_comments'); $comments = is_string($comments) ? $comments : ''; diff --git a/app/Http/RequestHandlers/RenumberTreeAction.php b/app/Http/RequestHandlers/RenumberTreeAction.php index 24c31e094f..df3b1c3186 100644 --- a/app/Http/RequestHandlers/RenumberTreeAction.php +++ b/app/Http/RequestHandlers/RenumberTreeAction.php @@ -31,7 +31,7 @@ use Fisharebest\Webtrees\Repository; use Fisharebest\Webtrees\Services\AdminService; use Fisharebest\Webtrees\Services\TimeoutService; use Fisharebest\Webtrees\Source; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Illuminate\Database\Capsule\Manager as DB; use Illuminate\Database\Query\Expression; use Illuminate\Database\Query\JoinClause; @@ -39,7 +39,6 @@ use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function redirect; use function route; @@ -69,9 +68,7 @@ class RenumberTreeAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - + $tree = Validator::attributes($request)->tree(); $xrefs = $this->admin_service->duplicateXrefs($tree); foreach ($xrefs as $old_xref => $type) { diff --git a/app/Http/RequestHandlers/RenumberTreePage.php b/app/Http/RequestHandlers/RenumberTreePage.php index 51929a33d8..291065be54 100644 --- a/app/Http/RequestHandlers/RenumberTreePage.php +++ b/app/Http/RequestHandlers/RenumberTreePage.php @@ -22,12 +22,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Services\AdminService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function e; /** @@ -56,9 +55,7 @@ class RenumberTreePage implements RequestHandlerInterface { $this->layout = 'layouts/administration'; - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - + $tree = Validator::attributes($request)->tree(); $xrefs = $this->admin_service->duplicateXrefs($tree); /* I18N: Renumber the records in a family tree */ diff --git a/app/Http/RequestHandlers/ReorderChildrenAction.php b/app/Http/RequestHandlers/ReorderChildrenAction.php index ae820340af..89eecb1f29 100644 --- a/app/Http/RequestHandlers/ReorderChildrenAction.php +++ b/app/Http/RequestHandlers/ReorderChildrenAction.php @@ -21,7 +21,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -47,12 +47,8 @@ class ReorderChildrenAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); $family = Registry::familyFactory()->make($xref, $tree); $family = Auth::checkFamilyAccess($family, true); diff --git a/app/Http/RequestHandlers/ReorderChildrenPage.php b/app/Http/RequestHandlers/ReorderChildrenPage.php index ec0f2db19f..ff6a7b5b9b 100644 --- a/app/Http/RequestHandlers/ReorderChildrenPage.php +++ b/app/Http/RequestHandlers/ReorderChildrenPage.php @@ -23,7 +23,7 @@ use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -45,12 +45,8 @@ class ReorderChildrenPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); $family = Registry::familyFactory()->make($xref, $tree); $family = Auth::checkFamilyAccess($family, true); diff --git a/app/Http/RequestHandlers/ReorderFamiliesAction.php b/app/Http/RequestHandlers/ReorderFamiliesAction.php index 1124285437..2efd089871 100644 --- a/app/Http/RequestHandlers/ReorderFamiliesAction.php +++ b/app/Http/RequestHandlers/ReorderFamiliesAction.php @@ -21,7 +21,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -47,12 +47,8 @@ class ReorderFamiliesAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); $individual = Registry::individualFactory()->make($xref, $tree); $individual = Auth::checkIndividualAccess($individual, true); diff --git a/app/Http/RequestHandlers/ReorderFamiliesPage.php b/app/Http/RequestHandlers/ReorderFamiliesPage.php index c8efdf3195..63633f7697 100644 --- a/app/Http/RequestHandlers/ReorderFamiliesPage.php +++ b/app/Http/RequestHandlers/ReorderFamiliesPage.php @@ -23,7 +23,7 @@ use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -45,16 +45,11 @@ class ReorderFamiliesPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); $individual = Registry::individualFactory()->make($xref, $tree); $individual = Auth::checkIndividualAccess($individual, true); - - $title = $individual->fullName() . ' — ' . I18N::translate('Re-order families'); + $title = $individual->fullName() . ' — ' . I18N::translate('Re-order families'); return $this->viewResponse('edit/reorder-families', [ 'famc_facts' => $individual->facts(['FAMC']), diff --git a/app/Http/RequestHandlers/ReorderMediaAction.php b/app/Http/RequestHandlers/ReorderMediaAction.php index 5afbfb6cc6..f0546c70a4 100644 --- a/app/Http/RequestHandlers/ReorderMediaAction.php +++ b/app/Http/RequestHandlers/ReorderMediaAction.php @@ -21,7 +21,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -31,7 +31,6 @@ use function array_search; use function assert; use function implode; use function is_array; -use function is_string; use function redirect; use function uksort; @@ -47,16 +46,11 @@ class ReorderMediaAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); $individual = Registry::individualFactory()->make($xref, $tree); $individual = Auth::checkIndividualAccess($individual, true); - - $params = (array) $request->getParsedBody(); + $params = (array) $request->getParsedBody(); $order = $params['order']; assert(is_array($order)); diff --git a/app/Http/RequestHandlers/ReorderMediaPage.php b/app/Http/RequestHandlers/ReorderMediaPage.php index 01c005a92d..aae6779e23 100644 --- a/app/Http/RequestHandlers/ReorderMediaPage.php +++ b/app/Http/RequestHandlers/ReorderMediaPage.php @@ -23,14 +23,11 @@ use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; -use function is_string; - /** * Reorder the media of an individual. */ @@ -45,16 +42,11 @@ class ReorderMediaPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); $individual = Registry::individualFactory()->make($xref, $tree); $individual = Auth::checkIndividualAccess($individual, true); - - $title = $individual->fullName() . ' — ' . I18N::translate('Re-order media'); + $title = $individual->fullName() . ' — ' . I18N::translate('Re-order media'); return $this->viewResponse('edit/reorder-media', [ 'individual' => $individual, diff --git a/app/Http/RequestHandlers/ReorderNamesAction.php b/app/Http/RequestHandlers/ReorderNamesAction.php index 285e30721b..39623aa5c1 100644 --- a/app/Http/RequestHandlers/ReorderNamesAction.php +++ b/app/Http/RequestHandlers/ReorderNamesAction.php @@ -21,7 +21,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -47,12 +47,8 @@ class ReorderNamesAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); $individual = Registry::individualFactory()->make($xref, $tree); $individual = Auth::checkIndividualAccess($individual, true); diff --git a/app/Http/RequestHandlers/ReorderNamesPage.php b/app/Http/RequestHandlers/ReorderNamesPage.php index f89815f42e..b795490004 100644 --- a/app/Http/RequestHandlers/ReorderNamesPage.php +++ b/app/Http/RequestHandlers/ReorderNamesPage.php @@ -23,14 +23,11 @@ use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; -use function is_string; - /** * Reorder the names of an individual. */ @@ -45,16 +42,11 @@ class ReorderNamesPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); $individual = Registry::individualFactory()->make($xref, $tree); $individual = Auth::checkIndividualAccess($individual, true); - - $title = $individual->fullName() . ' — ' . I18N::translate('Re-order names'); + $title = $individual->fullName() . ' — ' . I18N::translate('Re-order names'); return $this->viewResponse('edit/reorder-names', [ 'individual' => $individual, diff --git a/app/Http/RequestHandlers/ReportGenerate.php b/app/Http/RequestHandlers/ReportGenerate.php index 0d7a52e457..652cd6ac84 100644 --- a/app/Http/RequestHandlers/ReportGenerate.php +++ b/app/Http/RequestHandlers/ReportGenerate.php @@ -21,7 +21,6 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fig\Http\Message\StatusCodeInterface; use Fisharebest\Webtrees\Auth; -use Fisharebest\Webtrees\Contracts\UserInterface; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Module\ModuleReportInterface; @@ -30,13 +29,12 @@ use Fisharebest\Webtrees\Report\HtmlRenderer; use Fisharebest\Webtrees\Report\PdfRenderer; use Fisharebest\Webtrees\Report\ReportParserGenerate; use Fisharebest\Webtrees\Services\ModuleService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; use function addcslashes; -use function assert; use function ob_get_clean; use function ob_start; use function redirect; @@ -71,15 +69,12 @@ class ReportGenerate implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $user = $request->getAttribute('user'); - assert($user instanceof UserInterface); + $tree = Validator::attributes($request)->tree(); + $user = Validator::attributes($request)->user(); $data_filesystem = Registry::filesystem()->data(); - $report = $request->getAttribute('report'); + $report = Validator::attributes($request)->string('report'); $module = $this->module_service->findByName($report); if (!$module instanceof ModuleReportInterface) { diff --git a/app/Http/RequestHandlers/ReportListAction.php b/app/Http/RequestHandlers/ReportListAction.php index 4e39aae663..cc2fe86b2e 100644 --- a/app/Http/RequestHandlers/ReportListAction.php +++ b/app/Http/RequestHandlers/ReportListAction.php @@ -20,15 +20,13 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; -use Fisharebest\Webtrees\Contracts\UserInterface; use Fisharebest\Webtrees\Module\ModuleReportInterface; use Fisharebest\Webtrees\Services\ModuleService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function redirect; use function route; @@ -58,11 +56,8 @@ class ReportListAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $user = $request->getAttribute('user'); - assert($user instanceof UserInterface); + $tree = Validator::attributes($request)->tree(); + $user = Validator::attributes($request)->user(); $params = (array) $request->getParsedBody(); diff --git a/app/Http/RequestHandlers/ReportListPage.php b/app/Http/RequestHandlers/ReportListPage.php index 5c6c834815..d47327e009 100644 --- a/app/Http/RequestHandlers/ReportListPage.php +++ b/app/Http/RequestHandlers/ReportListPage.php @@ -19,18 +19,15 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; -use Fisharebest\Webtrees\Contracts\UserInterface; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Module\ModuleReportInterface; use Fisharebest\Webtrees\Services\ModuleService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; - /** * Show all available reports. */ @@ -59,11 +56,8 @@ class ReportListPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $user = $request->getAttribute('user'); - assert($user instanceof UserInterface); + $tree = Validator::attributes($request)->tree(); + $user = Validator::attributes($request)->user(); $reports = $this->module_service ->findByComponent(ModuleReportInterface::class, $tree, $user); diff --git a/app/Http/RequestHandlers/ReportSetupAction.php b/app/Http/RequestHandlers/ReportSetupAction.php index 33f1f77fbf..2a2342f0a5 100644 --- a/app/Http/RequestHandlers/ReportSetupAction.php +++ b/app/Http/RequestHandlers/ReportSetupAction.php @@ -20,16 +20,14 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; -use Fisharebest\Webtrees\Contracts\UserInterface; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\Module\ModuleReportInterface; use Fisharebest\Webtrees\Services\ModuleService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function redirect; use function route; @@ -59,13 +57,10 @@ class ReportSetupAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); + $user = Validator::attributes($request)->user(); - $user = $request->getAttribute('user'); - assert($user instanceof UserInterface); - - $report = $request->getAttribute('report'); + $report = Validator::attributes($request)->string('report'); $module = $this->module_service->findByName($report); if (!$module instanceof ModuleReportInterface) { diff --git a/app/Http/RequestHandlers/ReportSetupPage.php b/app/Http/RequestHandlers/ReportSetupPage.php index 0890abc838..88d0bb9a23 100644 --- a/app/Http/RequestHandlers/ReportSetupPage.php +++ b/app/Http/RequestHandlers/ReportSetupPage.php @@ -20,7 +20,6 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; -use Fisharebest\Webtrees\Contracts\UserInterface; use Fisharebest\Webtrees\Html; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; @@ -29,12 +28,11 @@ use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Report\ReportParserSetup; use Fisharebest\Webtrees\Services\LocalizationService; use Fisharebest\Webtrees\Services\ModuleService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function redirect; use function route; @@ -68,13 +66,10 @@ class ReportSetupPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); + $user = Validator::attributes($request)->user(); - $user = $request->getAttribute('user'); - assert($user instanceof UserInterface); - - $report = $request->getAttribute('report'); + $report = Validator::attributes($request)->string('report'); $module = $this->module_service->findByName($report); if (!$module instanceof ModuleReportInterface) { diff --git a/app/Http/RequestHandlers/RepositoryPage.php b/app/Http/RequestHandlers/RepositoryPage.php index 886c8b287b..ef919ac534 100644 --- a/app/Http/RequestHandlers/RepositoryPage.php +++ b/app/Http/RequestHandlers/RepositoryPage.php @@ -24,13 +24,11 @@ use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\ClipboardService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; -use function is_string; use function redirect; /** @@ -59,19 +57,14 @@ class RepositoryPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); + $slug = Validator::attributes($request)->string('slug', ''); $record = Registry::repositoryFactory()->make($xref, $tree); $record = Auth::checkRepositoryAccess($record, false); // Redirect to correct xref/slug - $slug = Registry::slugFactory()->make($record); - - if ($record->xref() !== $xref || $request->getAttribute('slug') !== $slug) { + if ($record->xref() !== $xref || Registry::slugFactory()->make($record) !== $slug) { return redirect($record->url(), StatusCodeInterface::STATUS_MOVED_PERMANENTLY); } diff --git a/app/Http/RequestHandlers/RobotsTxt.php b/app/Http/RequestHandlers/RobotsTxt.php index 71f01eed4c..318e4e125d 100644 --- a/app/Http/RequestHandlers/RobotsTxt.php +++ b/app/Http/RequestHandlers/RobotsTxt.php @@ -22,6 +22,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Http\Middleware\BadBotBlocker; use Fisharebest\Webtrees\Module\SiteMapModule; use Fisharebest\Webtrees\Services\ModuleService; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -62,7 +63,7 @@ class RobotsTxt implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $base_url = $request->getAttribute('base_url'); + $base_url = Validator::attributes($request)->string('base_url'); $data = [ 'bad_user_agents' => BadBotBlocker::BAD_ROBOTS, diff --git a/app/Http/RequestHandlers/SearchAdvancedAction.php b/app/Http/RequestHandlers/SearchAdvancedAction.php index 20c4213f2f..ed36a74803 100644 --- a/app/Http/RequestHandlers/SearchAdvancedAction.php +++ b/app/Http/RequestHandlers/SearchAdvancedAction.php @@ -19,13 +19,11 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; - /** * Search for genealogy data */ @@ -40,11 +38,8 @@ class SearchAdvancedAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $params = (array) $request->getParsedBody(); - + $tree = Validator::attributes($request)->tree(); + $params = (array) $request->getParsedBody(); $fields = $params['fields'] ?? []; $modifiers = $params['modifiers'] ?? []; $other_field = $params['other_field'] ?? ''; diff --git a/app/Http/RequestHandlers/SearchAdvancedPage.php b/app/Http/RequestHandlers/SearchAdvancedPage.php index d563570536..e24a0e7cdd 100644 --- a/app/Http/RequestHandlers/SearchAdvancedPage.php +++ b/app/Http/RequestHandlers/SearchAdvancedPage.php @@ -23,7 +23,7 @@ use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\SearchService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Illuminate\Support\Collection; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; @@ -33,7 +33,6 @@ use function array_fill_keys; use function array_filter; use function array_key_exists; use function array_merge; -use function assert; use function strtr; /** @@ -142,8 +141,7 @@ class SearchAdvancedPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); $default_fields = array_fill_keys(self::DEFAULT_ADVANCED_FIELDS, ''); diff --git a/app/Http/RequestHandlers/SearchGeneralAction.php b/app/Http/RequestHandlers/SearchGeneralAction.php index 3bd0d7af95..c0769ed7a1 100644 --- a/app/Http/RequestHandlers/SearchGeneralAction.php +++ b/app/Http/RequestHandlers/SearchGeneralAction.php @@ -19,13 +19,11 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; - /** * Search for genealogy data */ @@ -40,8 +38,7 @@ class SearchGeneralAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); $params = (array) $request->getParsedBody(); diff --git a/app/Http/RequestHandlers/SearchGeneralPage.php b/app/Http/RequestHandlers/SearchGeneralPage.php index b5606357e2..b45b5b7381 100644 --- a/app/Http/RequestHandlers/SearchGeneralPage.php +++ b/app/Http/RequestHandlers/SearchGeneralPage.php @@ -29,13 +29,13 @@ use Fisharebest\Webtrees\Services\SearchService; use Fisharebest\Webtrees\Services\TreeService; use Fisharebest\Webtrees\Site; use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Illuminate\Database\Capsule\Manager as DB; use Illuminate\Support\Collection; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function preg_replace; use function redirect; use function trim; @@ -74,8 +74,7 @@ class SearchGeneralPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); $params = $request->getQueryParams(); $query = $params['query'] ?? ''; diff --git a/app/Http/RequestHandlers/SearchPhoneticAction.php b/app/Http/RequestHandlers/SearchPhoneticAction.php index e3f14e4b26..6c0125a169 100644 --- a/app/Http/RequestHandlers/SearchPhoneticAction.php +++ b/app/Http/RequestHandlers/SearchPhoneticAction.php @@ -19,13 +19,11 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; - /** * Search for genealogy data */ @@ -40,8 +38,7 @@ class SearchPhoneticAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); $params = (array) $request->getParsedBody(); diff --git a/app/Http/RequestHandlers/SearchPhoneticPage.php b/app/Http/RequestHandlers/SearchPhoneticPage.php index 9f34382507..33036a29a3 100644 --- a/app/Http/RequestHandlers/SearchPhoneticPage.php +++ b/app/Http/RequestHandlers/SearchPhoneticPage.php @@ -25,13 +25,12 @@ use Fisharebest\Webtrees\Services\SearchService; use Fisharebest\Webtrees\Services\TreeService; use Fisharebest\Webtrees\Site; use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Illuminate\Support\Collection; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; - /** * Search for (and optionally replace) genealogy data */ @@ -64,8 +63,7 @@ class SearchPhoneticPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); $params = $request->getQueryParams(); $firstname = $params['firstname'] ?? ''; diff --git a/app/Http/RequestHandlers/SearchQuickAction.php b/app/Http/RequestHandlers/SearchQuickAction.php index 8c2c271dac..dd76d25e58 100644 --- a/app/Http/RequestHandlers/SearchQuickAction.php +++ b/app/Http/RequestHandlers/SearchQuickAction.php @@ -21,12 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\GedcomRecord; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function redirect; use function route; @@ -44,8 +43,7 @@ class SearchQuickAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); $params = (array) $request->getParsedBody(); diff --git a/app/Http/RequestHandlers/SearchReplaceAction.php b/app/Http/RequestHandlers/SearchReplaceAction.php index a063590b5f..6221cb3b6c 100644 --- a/app/Http/RequestHandlers/SearchReplaceAction.php +++ b/app/Http/RequestHandlers/SearchReplaceAction.php @@ -25,14 +25,12 @@ use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\SearchService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Illuminate\Support\Collection; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; - /** * Search and replace genealogy data */ @@ -61,9 +59,7 @@ class SearchReplaceAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - + $tree = Validator::attributes($request)->tree(); $params = (array) $request->getParsedBody(); $search = $params['search'] ?? ''; $replace = $params['replace'] ?? ''; diff --git a/app/Http/RequestHandlers/SearchReplacePage.php b/app/Http/RequestHandlers/SearchReplacePage.php index 6d5e305dd4..62322b4836 100644 --- a/app/Http/RequestHandlers/SearchReplacePage.php +++ b/app/Http/RequestHandlers/SearchReplacePage.php @@ -21,13 +21,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; - /** * Search and replace genealogy data */ @@ -44,12 +42,9 @@ class SearchReplacePage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - + $tree = Validator::attributes($request)->tree(); $params = $request->getQueryParams(); - - $title = I18N::translate('Search and replace'); + $title = I18N::translate('Search and replace'); return $this->viewResponse('search-replace-page', [ 'context' => $params['context'] ?? 'all', diff --git a/app/Http/RequestHandlers/SelectDefaultTree.php b/app/Http/RequestHandlers/SelectDefaultTree.php index 3c68d2a55e..f0062f215d 100644 --- a/app/Http/RequestHandlers/SelectDefaultTree.php +++ b/app/Http/RequestHandlers/SelectDefaultTree.php @@ -23,12 +23,11 @@ use Fig\Http\Message\StatusCodeInterface; use Fisharebest\Webtrees\FlashMessages; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Site; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function e; use function redirect; use function route; @@ -45,8 +44,7 @@ class SelectDefaultTree implements RequestHandlerInterface, StatusCodeInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); Site::setPreference('DEFAULT_GEDCOM', $tree->name()); diff --git a/app/Http/RequestHandlers/SelectLanguage.php b/app/Http/RequestHandlers/SelectLanguage.php index af6f88326b..0eaa361266 100644 --- a/app/Http/RequestHandlers/SelectLanguage.php +++ b/app/Http/RequestHandlers/SelectLanguage.php @@ -21,6 +21,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Contracts\UserInterface; use Fisharebest\Webtrees\Session; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -41,8 +42,7 @@ class SelectLanguage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $user = $request->getAttribute('user'); - assert($user instanceof UserInterface); + $user = Validator::attributes($request)->user(); $language = $request->getAttribute('language'); assert(is_string($language)); diff --git a/app/Http/RequestHandlers/SelectNewFact.php b/app/Http/RequestHandlers/SelectNewFact.php index 449cada6a5..be2590a298 100644 --- a/app/Http/RequestHandlers/SelectNewFact.php +++ b/app/Http/RequestHandlers/SelectNewFact.php @@ -19,7 +19,7 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -40,12 +40,8 @@ class SelectNewFact implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); $params = (array) $request->getParsedBody(); $fact = $params['fact']; diff --git a/app/Http/RequestHandlers/SelectTheme.php b/app/Http/RequestHandlers/SelectTheme.php index 9ca1b35bd7..88ba9dbf1b 100644 --- a/app/Http/RequestHandlers/SelectTheme.php +++ b/app/Http/RequestHandlers/SelectTheme.php @@ -21,6 +21,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Contracts\UserInterface; use Fisharebest\Webtrees\Session; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -41,8 +42,7 @@ class SelectTheme implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $user = $request->getAttribute('user'); - assert($user instanceof UserInterface); + $user = Validator::attributes($request)->user(); $theme = $request->getAttribute('theme'); assert(is_string($theme)); diff --git a/app/Http/RequestHandlers/SetupWizard.php b/app/Http/RequestHandlers/SetupWizard.php index 25136cebac..2da653ebc4 100644 --- a/app/Http/RequestHandlers/SetupWizard.php +++ b/app/Http/RequestHandlers/SetupWizard.php @@ -35,6 +35,7 @@ use Fisharebest\Webtrees\Services\ModuleService; use Fisharebest\Webtrees\Services\ServerCheckService; use Fisharebest\Webtrees\Services\UserService; use Fisharebest\Webtrees\Session; +use Fisharebest\Webtrees\Validator; use Fisharebest\Webtrees\Webtrees; use Illuminate\Database\Capsule\Manager as DB; use Psr\Http\Message\ResponseInterface; @@ -130,15 +131,14 @@ class SetupWizard implements RequestHandlerInterface Registry::cache(new CacheFactory()); // We will need an IP address for the logs. - $ip_address = $request->getServerParams()['REMOTE_ADDR'] ?? '127.0.0.1'; - $request = $request->withAttribute('client-ip', $ip_address); + $ip_address = Validator::serverParams($request)->string('REMOTE_ADDR', '127.0.0.1'); + $request = $request->withAttribute('client-ip', $ip_address); app()->instance(ServerRequestInterface::class, $request); $data = $this->userData($request); - $params = (array) $request->getParsedBody(); - $step = (int) ($params['step'] ?? '1'); + $step = Validator::parsedBody($request)->integer('step', 1); $locales = $this->module_service ->setupLanguages() diff --git a/app/Http/RequestHandlers/SourcePage.php b/app/Http/RequestHandlers/SourcePage.php index 11fcacc09d..4349a22af2 100644 --- a/app/Http/RequestHandlers/SourcePage.php +++ b/app/Http/RequestHandlers/SourcePage.php @@ -24,13 +24,11 @@ use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\ClipboardService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; -use function is_string; use function redirect; /** @@ -59,19 +57,14 @@ class SourcePage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); + $slug = Validator::attributes($request)->string('slug', ''); $record = Registry::sourceFactory()->make($xref, $tree); $record = Auth::checkSourceAccess($record, false); // Redirect to correct xref/slug - $slug = Registry::slugFactory()->make($record); - - if ($record->xref() !== $xref || $request->getAttribute('slug') !== $slug) { + if ($record->xref() !== $xref || Registry::slugFactory()->make($record) !== $slug) { return redirect($record->url(), StatusCodeInterface::STATUS_MOVED_PERMANENTLY); } diff --git a/app/Http/RequestHandlers/SubmissionPage.php b/app/Http/RequestHandlers/SubmissionPage.php index 3d90a651ea..146b4bff62 100644 --- a/app/Http/RequestHandlers/SubmissionPage.php +++ b/app/Http/RequestHandlers/SubmissionPage.php @@ -23,7 +23,7 @@ use Fig\Http\Message\StatusCodeInterface; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Illuminate\Support\Collection; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; @@ -47,19 +47,14 @@ class SubmissionPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); + $slug = Validator::attributes($request)->string('slug', ''); $record = Registry::submissionFactory()->make($xref, $tree); $record = Auth::checkSubmissionAccess($record, false); // Redirect to correct xref/slug - $slug = Registry::slugFactory()->make($record); - - if ($record->xref() !== $xref || $request->getAttribute('slug') !== $slug) { + if ($record->xref() !== $xref || Registry::slugFactory()->make($record) !== $slug) { return redirect($record->url(), StatusCodeInterface::STATUS_MOVED_PERMANENTLY); } diff --git a/app/Http/RequestHandlers/SubmitterPage.php b/app/Http/RequestHandlers/SubmitterPage.php index b778e93352..1287b4d758 100644 --- a/app/Http/RequestHandlers/SubmitterPage.php +++ b/app/Http/RequestHandlers/SubmitterPage.php @@ -23,14 +23,12 @@ use Fig\Http\Message\StatusCodeInterface; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Illuminate\Support\Collection; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; -use function is_string; use function redirect; /** @@ -47,19 +45,14 @@ class SubmitterPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $xref = $request->getAttribute('xref'); - assert(is_string($xref)); - + $tree = Validator::attributes($request)->tree(); + $xref = Validator::attributes($request)->isXref()->string('xref'); + $slug = Validator::attributes($request)->string('slug', ''); $record = Registry::submitterFactory()->make($xref, $tree); $record = Auth::checkSubmitterAccess($record, false); // Redirect to correct xref/slug - $slug = Registry::slugFactory()->make($record); - - if ($record->xref() !== $xref || $request->getAttribute('slug') !== $slug) { + if ($record->xref() !== $xref || Registry::slugFactory()->make($record) !== $slug) { return redirect($record->url(), StatusCodeInterface::STATUS_MOVED_PERMANENTLY); } diff --git a/app/Http/RequestHandlers/SynchronizeTrees.php b/app/Http/RequestHandlers/SynchronizeTrees.php index df22977b5c..bd1c2fd506 100644 --- a/app/Http/RequestHandlers/SynchronizeTrees.php +++ b/app/Http/RequestHandlers/SynchronizeTrees.php @@ -45,6 +45,8 @@ class SynchronizeTrees implements RequestHandlerInterface { private AdminService $admin_service; + private StreamFactoryInterface $stream_factory; + private TimeoutService $timeout_service; private TreeService $tree_service; @@ -53,15 +55,18 @@ class SynchronizeTrees implements RequestHandlerInterface * AdminTreesController constructor. * * @param AdminService $admin_service + * @param StreamFactoryInterface $stream_factory * @param TimeoutService $timeout_service * @param TreeService $tree_service */ public function __construct( AdminService $admin_service, + StreamFactoryInterface $stream_factory, TimeoutService $timeout_service, TreeService $tree_service ) { $this->admin_service = $admin_service; + $this->stream_factory = $stream_factory; $this->timeout_service = $timeout_service; $this->tree_service = $tree_service; } @@ -86,7 +91,7 @@ class SynchronizeTrees implements RequestHandlerInterface if ($tree->getPreference('filemtime') !== $filemtime) { $resource = $data_filesystem->readStream($gedcom_file); - $stream = app(StreamFactoryInterface::class)->createStreamFromResource($resource); + $stream = $this->stream_factory->createStreamFromResource($resource); $this->tree_service->importGedcomFile($tree, $stream, $gedcom_file, ''); $stream->close(); $tree->setPreference('filemtime', $filemtime); diff --git a/app/Http/RequestHandlers/TreePage.php b/app/Http/RequestHandlers/TreePage.php index ebcb5b81a2..59fac2bda8 100644 --- a/app/Http/RequestHandlers/TreePage.php +++ b/app/Http/RequestHandlers/TreePage.php @@ -19,11 +19,10 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; -use Fisharebest\Webtrees\Contracts\UserInterface; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\Module\ModuleBlockInterface; use Fisharebest\Webtrees\Services\HomePageService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Illuminate\Database\Capsule\Manager as DB; use Illuminate\Database\Query\Builder; use Illuminate\Database\Query\Expression; @@ -31,7 +30,6 @@ use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function e; /** @@ -58,11 +56,8 @@ class TreePage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $user = $request->getAttribute('user'); - assert($user instanceof UserInterface); + $tree = Validator::attributes($request)->tree(); + $user = Validator::attributes($request)->user(); $has_blocks = DB::table('block') ->where('gedcom_id', '=', $tree->id()) diff --git a/app/Http/RequestHandlers/TreePageBlock.php b/app/Http/RequestHandlers/TreePageBlock.php index cf12db600a..56d190fcf4 100644 --- a/app/Http/RequestHandlers/TreePageBlock.php +++ b/app/Http/RequestHandlers/TreePageBlock.php @@ -21,13 +21,12 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Module\ModuleBlockInterface; use Fisharebest\Webtrees\Services\HomePageService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Illuminate\Database\Capsule\Manager as DB; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function response; use function view; @@ -53,9 +52,7 @@ class TreePageBlock implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - + $tree = Validator::attributes($request)->tree(); $block_id = $request->getQueryParams()['block_id']; $block_id = (int) DB::table('block') diff --git a/app/Http/RequestHandlers/TreePageBlockEdit.php b/app/Http/RequestHandlers/TreePageBlockEdit.php index 79cf8086eb..256b796210 100644 --- a/app/Http/RequestHandlers/TreePageBlockEdit.php +++ b/app/Http/RequestHandlers/TreePageBlockEdit.php @@ -22,12 +22,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Services\HomePageService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function route; /** @@ -54,17 +53,17 @@ class TreePageBlockEdit implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); + $block_id = Validator::attributes($request)->integer('block_id'); - $block_id = (int) $request->getQueryParams()['block_id']; - $block = $this->home_page_service->treeBlock($request); - $title = $block->title() . ' — ' . I18N::translate('Preferences'); + $block = $this->home_page_service->treeBlock($request); + $title = $block->title() . ' — ' . I18N::translate('Preferences'); return $this->viewResponse('modules/edit-block-config', [ 'block' => $block, 'block_id' => $block_id, 'cancel_url' => route(TreePage::class, ['tree' => $tree->name()]), + 'save_url' => route(TreePageBlockUpdate::class, ['tree' => $tree->name(), 'block_id' => $block_id]), 'title' => $title, 'tree' => $tree, ]); diff --git a/app/Http/RequestHandlers/TreePageBlockUpdate.php b/app/Http/RequestHandlers/TreePageBlockUpdate.php index 5973f8fda6..0839ddfdcc 100644 --- a/app/Http/RequestHandlers/TreePageBlockUpdate.php +++ b/app/Http/RequestHandlers/TreePageBlockUpdate.php @@ -20,12 +20,11 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Services\HomePageService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function redirect; use function route; @@ -51,11 +50,10 @@ class TreePageBlockUpdate implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); + $block_id = Validator::attributes($request)->integer('block_id'); - $block = $this->home_page_service->treeBlock($request); - $block_id = (int) $request->getQueryParams()['block_id']; + $block = $this->home_page_service->treeBlock($request); $block->saveBlockConfiguration($request, $block_id); diff --git a/app/Http/RequestHandlers/TreePageEdit.php b/app/Http/RequestHandlers/TreePageEdit.php index 5bfd2ef106..8fd3d0d58b 100644 --- a/app/Http/RequestHandlers/TreePageEdit.php +++ b/app/Http/RequestHandlers/TreePageEdit.php @@ -19,17 +19,15 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; -use Fisharebest\Webtrees\Contracts\UserInterface; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Module\ModuleBlockInterface; use Fisharebest\Webtrees\Services\HomePageService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function route; /** @@ -56,11 +54,8 @@ class TreePageEdit implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $user = $request->getAttribute('user'); - assert($user instanceof UserInterface); + $tree = Validator::attributes($request)->tree(); + $user = Validator::attributes($request)->user(); $main_blocks = $this->home_page_service->treeBlocks($tree, $user, ModuleBlockInterface::MAIN_BLOCKS); $side_blocks = $this->home_page_service->treeBlocks($tree, $user, ModuleBlockInterface::SIDE_BLOCKS); diff --git a/app/Http/RequestHandlers/TreePageUpdate.php b/app/Http/RequestHandlers/TreePageUpdate.php index 1717c9ec3a..03ef0c8c1c 100644 --- a/app/Http/RequestHandlers/TreePageUpdate.php +++ b/app/Http/RequestHandlers/TreePageUpdate.php @@ -19,16 +19,15 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; -use Fisharebest\Webtrees\Contracts\UserInterface; use Fisharebest\Webtrees\Module\ModuleBlockInterface; use Fisharebest\Webtrees\Services\HomePageService; use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Illuminate\Support\Collection; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function redirect; use function route; @@ -54,11 +53,8 @@ class TreePageUpdate implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $user = $request->getAttribute('user'); - assert($user instanceof UserInterface); + $tree = Validator::attributes($request)->tree(); + $user = Validator::attributes($request)->user(); $params = (array) $request->getParsedBody(); diff --git a/app/Http/RequestHandlers/TreePreferencesAction.php b/app/Http/RequestHandlers/TreePreferencesAction.php index ff2d2fc662..7ba0237a2d 100644 --- a/app/Http/RequestHandlers/TreePreferencesAction.php +++ b/app/Http/RequestHandlers/TreePreferencesAction.php @@ -22,7 +22,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Auth; use Fisharebest\Webtrees\FlashMessages; use Fisharebest\Webtrees\I18N; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Illuminate\Database\Capsule\Manager as DB; use PDOException; use Psr\Http\Message\ResponseInterface; @@ -30,7 +30,6 @@ use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; use function array_unique; -use function assert; use function e; use function implode; use function preg_replace; @@ -50,9 +49,7 @@ class TreePreferencesAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - + $tree = Validator::attributes($request)->tree(); $params = (array) $request->getParsedBody(); // For backwards compatibility with webtrees 1.x we store the two calendar formats in one variable diff --git a/app/Http/RequestHandlers/TreePreferencesPage.php b/app/Http/RequestHandlers/TreePreferencesPage.php index 7448a87e78..1a9fb0226f 100644 --- a/app/Http/RequestHandlers/TreePreferencesPage.php +++ b/app/Http/RequestHandlers/TreePreferencesPage.php @@ -32,14 +32,13 @@ use Fisharebest\Webtrees\Services\ModuleService; use Fisharebest\Webtrees\Services\TreeService; use Fisharebest\Webtrees\Services\UserService; use Fisharebest\Webtrees\SurnameTradition; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Illuminate\Support\Collection; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; use function app; -use function assert; use function e; use function explode; use function in_array; @@ -76,9 +75,7 @@ class TreePreferencesPage implements RequestHandlerInterface { $this->layout = 'layouts/administration'; - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - + $tree = Validator::attributes($request)->tree(); $data_folder = Registry::filesystem()->dataName(); $french_calendar_start = new Date('22 SEP 1792'); @@ -161,7 +158,7 @@ class TreePreferencesPage implements RequestHandlerInterface $title = I18N::translate('Preferences') . ' — ' . e($tree->title()); - $base_url = app(ServerRequestInterface::class)->getAttribute('base_url'); + $base_url = Validator::attributes($request)->string('base_url'); return $this->viewResponse('admin/trees-preferences', [ 'all_family_facts' => $all_family_facts, diff --git a/app/Http/RequestHandlers/TreePrivacyAction.php b/app/Http/RequestHandlers/TreePrivacyAction.php index 680e26e154..2d599497d1 100644 --- a/app/Http/RequestHandlers/TreePrivacyAction.php +++ b/app/Http/RequestHandlers/TreePrivacyAction.php @@ -21,13 +21,12 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\FlashMessages; use Fisharebest\Webtrees\I18N; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Illuminate\Database\Capsule\Manager as DB; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function e; use function redirect; use function route; @@ -44,9 +43,7 @@ class TreePrivacyAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - + $tree = Validator::attributes($request)->tree(); $params = (array) $request->getParsedBody(); $delete_default_resn_id = $params['delete'] ?? []; diff --git a/app/Http/RequestHandlers/TreePrivacyPage.php b/app/Http/RequestHandlers/TreePrivacyPage.php index 5c514bfcaa..6867d0f4dc 100644 --- a/app/Http/RequestHandlers/TreePrivacyPage.php +++ b/app/Http/RequestHandlers/TreePrivacyPage.php @@ -27,13 +27,13 @@ use Fisharebest\Webtrees\Individual; use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\TreeService; use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Illuminate\Database\Capsule\Manager as DB; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; use function array_merge; -use function assert; use function e; use function in_array; use function uasort; @@ -61,9 +61,7 @@ class TreePrivacyPage implements RequestHandlerInterface { $this->layout = 'layouts/administration'; - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - + $tree = Validator::attributes($request)->tree(); $title = e($tree->name()) . ' — ' . I18N::translate('Privacy'); $all_tags = $this->tagsForPrivacy(); $privacy_constants = $this->privacyConstants(); diff --git a/app/Http/RequestHandlers/UnconnectedAction.php b/app/Http/RequestHandlers/UnconnectedAction.php index 762e9c574c..fef5e37a33 100644 --- a/app/Http/RequestHandlers/UnconnectedAction.php +++ b/app/Http/RequestHandlers/UnconnectedAction.php @@ -19,13 +19,11 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; - /** * Find groups of unrelated individuals. */ @@ -40,8 +38,7 @@ class UnconnectedAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); $params = (array) $request->getParsedBody(); diff --git a/app/Http/RequestHandlers/UnconnectedPage.php b/app/Http/RequestHandlers/UnconnectedPage.php index 15832fc198..26b680c71d 100644 --- a/app/Http/RequestHandlers/UnconnectedPage.php +++ b/app/Http/RequestHandlers/UnconnectedPage.php @@ -24,14 +24,12 @@ use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Individual; use Fisharebest\Webtrees\Registry; -use Fisharebest\Webtrees\Tree; -use Fisharebest\Webtrees\User; +use Fisharebest\Webtrees\Validator; use Illuminate\Database\Capsule\Manager as DB; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function strtolower; /** @@ -48,12 +46,8 @@ class UnconnectedPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $user = $request->getAttribute('user'); - assert($user instanceof User); - + $tree = Validator::attributes($request)->tree(); + $user = Validator::attributes($request)->user(); $aliases = (bool) ($request->getQueryParams()['aliases'] ?? false); $associates = (bool) ($request->getQueryParams()['associates'] ?? false); diff --git a/app/Http/RequestHandlers/UserEditAction.php b/app/Http/RequestHandlers/UserEditAction.php index 10792e6483..2341fbe981 100644 --- a/app/Http/RequestHandlers/UserEditAction.php +++ b/app/Http/RequestHandlers/UserEditAction.php @@ -29,6 +29,7 @@ use Fisharebest\Webtrees\Services\TreeService; use Fisharebest\Webtrees\Services\UserService; use Fisharebest\Webtrees\SiteUser; use Fisharebest\Webtrees\User; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -70,7 +71,7 @@ class UserEditAction implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $user = $request->getAttribute('user'); + $user = Validator::attributes($request)->user(); $params = (array) $request->getParsedBody(); @@ -100,7 +101,7 @@ class UserEditAction implements RequestHandlerInterface if ($approved && $edit_user->getPreference(UserInterface::PREF_IS_ACCOUNT_APPROVED) !== '1') { I18N::init($edit_user->getPreference(UserInterface::PREF_LANGUAGE)); - $base_url = $request->getAttribute('base_url'); + $base_url = Validator::attributes($request)->string('base_url'); $this->email_service->send( new SiteUser(), diff --git a/app/Http/RequestHandlers/UserListData.php b/app/Http/RequestHandlers/UserListData.php index a4a3691dc1..ec1307630e 100644 --- a/app/Http/RequestHandlers/UserListData.php +++ b/app/Http/RequestHandlers/UserListData.php @@ -26,6 +26,7 @@ use Fisharebest\Webtrees\Registry; use Fisharebest\Webtrees\Services\DatatablesService; use Fisharebest\Webtrees\Services\ModuleService; use Fisharebest\Webtrees\Services\UserService; +use Fisharebest\Webtrees\Validator; use Illuminate\Database\Capsule\Manager as DB; use Illuminate\Database\Query\JoinClause; use Psr\Http\Message\ResponseInterface; @@ -69,7 +70,7 @@ class UserListData implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $user = $request->getAttribute('user'); + $user = Validator::attributes($request)->user(); $languages = $this->module_service->findByInterface(ModuleLanguageInterface::class, true) ->mapWithKeys(static function (ModuleLanguageInterface $module): array { diff --git a/app/Http/RequestHandlers/UserListPage.php b/app/Http/RequestHandlers/UserListPage.php index 5868b3bf32..caa28c9230 100644 --- a/app/Http/RequestHandlers/UserListPage.php +++ b/app/Http/RequestHandlers/UserListPage.php @@ -21,6 +21,7 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; @@ -41,7 +42,7 @@ class UserListPage implements RequestHandlerInterface { $this->layout = 'layouts/administration'; - $user = $request->getAttribute('user'); + $user = Validator::attributes($request)->user(); $params = $request->getQueryParams(); $filter = $params['filter'] ?? ''; diff --git a/app/Http/RequestHandlers/UserPage.php b/app/Http/RequestHandlers/UserPage.php index 45ba45323d..b82eebe31b 100644 --- a/app/Http/RequestHandlers/UserPage.php +++ b/app/Http/RequestHandlers/UserPage.php @@ -19,12 +19,11 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; -use Fisharebest\Webtrees\Contracts\UserInterface; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Module\ModuleBlockInterface; use Fisharebest\Webtrees\Services\HomePageService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Illuminate\Database\Capsule\Manager as DB; use Illuminate\Database\Query\Builder; use Illuminate\Database\Query\Expression; @@ -32,8 +31,6 @@ use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; - /** * Show a user's page. */ @@ -58,11 +55,8 @@ class UserPage implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $user = $request->getAttribute('user'); - assert($user instanceof UserInterface); + $tree = Validator::attributes($request)->tree(); + $user = Validator::attributes($request)->user(); $has_blocks = DB::table('block') ->where('user_id', '=', $user->id()) diff --git a/app/Http/RequestHandlers/UserPageBlock.php b/app/Http/RequestHandlers/UserPageBlock.php index 5ee708e1cb..ad3fa9cbf5 100644 --- a/app/Http/RequestHandlers/UserPageBlock.php +++ b/app/Http/RequestHandlers/UserPageBlock.php @@ -21,13 +21,12 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Module\ModuleBlockInterface; use Fisharebest\Webtrees\Services\HomePageService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Illuminate\Database\Capsule\Manager as DB; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function response; use function view; @@ -54,10 +53,8 @@ class UserPageBlock implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $user = $request->getAttribute('user'); + $tree = Validator::attributes($request)->tree(); + $user = Validator::attributes($request)->user(); $block_id = $request->getQueryParams()['block_id']; $block_id = (int) DB::table('block') diff --git a/app/Http/RequestHandlers/UserPageBlockEdit.php b/app/Http/RequestHandlers/UserPageBlockEdit.php index 4cb6712e54..d526bd7c82 100644 --- a/app/Http/RequestHandlers/UserPageBlockEdit.php +++ b/app/Http/RequestHandlers/UserPageBlockEdit.php @@ -22,12 +22,11 @@ namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Services\HomePageService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function route; /** @@ -54,18 +53,18 @@ class UserPageBlockEdit implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); + $tree = Validator::attributes($request)->tree(); + $user = Validator::attributes($request)->user(); + $block_id = Validator::attributes($request)->integer('block_id'); - $user = $request->getAttribute('user'); - $block_id = (int) $request->getQueryParams()['block_id']; - $block = $this->home_page_service->userBlock($request, $user); - $title = $block->title() . ' — ' . I18N::translate('Preferences'); + $block = $this->home_page_service->userBlock($request, $user); + $title = $block->title() . ' — ' . I18N::translate('Preferences'); return $this->viewResponse('modules/edit-block-config', [ 'block' => $block, 'block_id' => $block_id, 'cancel_url' => route(UserPage::class, ['tree' => $tree->name()]), + 'save_url' => route(UserPageBlockUpdate::class, ['tree' => $tree->name(), 'block_id' => $block_id]), 'title' => $title, 'tree' => $tree, ]); diff --git a/app/Http/RequestHandlers/UserPageBlockUpdate.php b/app/Http/RequestHandlers/UserPageBlockUpdate.php index 8c42280a08..8878cb10f3 100644 --- a/app/Http/RequestHandlers/UserPageBlockUpdate.php +++ b/app/Http/RequestHandlers/UserPageBlockUpdate.php @@ -20,12 +20,11 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; use Fisharebest\Webtrees\Services\HomePageService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function redirect; use function route; @@ -51,13 +50,11 @@ class UserPageBlockUpdate implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $user = $request->getAttribute('user'); - $block = $this->home_page_service->userBlock($request, $user); - $block_id = (int) $request->getQueryParams()['block_id']; + $tree = Validator::attributes($request)->tree(); + $user = Validator::attributes($request)->user(); + $block_id = Validator::attributes($request)->integer('block_id'); + $block = $this->home_page_service->userBlock($request, $user); $block->saveBlockConfiguration($request, $block_id); return redirect(route(UserPage::class, ['tree' => $tree->name()])); diff --git a/app/Http/RequestHandlers/UserPageEdit.php b/app/Http/RequestHandlers/UserPageEdit.php index f7378c16ae..bf468cb82d 100644 --- a/app/Http/RequestHandlers/UserPageEdit.php +++ b/app/Http/RequestHandlers/UserPageEdit.php @@ -19,17 +19,15 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; -use Fisharebest\Webtrees\Contracts\UserInterface; use Fisharebest\Webtrees\Http\ViewResponseTrait; use Fisharebest\Webtrees\I18N; use Fisharebest\Webtrees\Module\ModuleBlockInterface; use Fisharebest\Webtrees\Services\HomePageService; -use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function route; /** @@ -56,13 +54,8 @@ class UserPageEdit implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $user = $request->getAttribute('user'); - assert($user instanceof UserInterface); - - $user = $request->getAttribute('user'); + $tree = Validator::attributes($request)->tree(); + $user = Validator::attributes($request)->user(); $main_blocks = $this->home_page_service->userBlocks($tree, $user, ModuleBlockInterface::MAIN_BLOCKS); $side_blocks = $this->home_page_service->userBlocks($tree, $user, ModuleBlockInterface::SIDE_BLOCKS); $all_blocks = $this->home_page_service->availableUserBlocks($tree, $user); diff --git a/app/Http/RequestHandlers/UserPageUpdate.php b/app/Http/RequestHandlers/UserPageUpdate.php index 73b30a2ab7..815d4fb1a8 100644 --- a/app/Http/RequestHandlers/UserPageUpdate.php +++ b/app/Http/RequestHandlers/UserPageUpdate.php @@ -19,16 +19,15 @@ declare(strict_types=1); namespace Fisharebest\Webtrees\Http\RequestHandlers; -use Fisharebest\Webtrees\Contracts\UserInterface; use Fisharebest\Webtrees\Module\ModuleBlockInterface; use Fisharebest\Webtrees\Services\HomePageService; use Fisharebest\Webtrees\Tree; +use Fisharebest\Webtrees\Validator; use Illuminate\Support\Collection; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\RequestHandlerInterface; -use function assert; use function redirect; use function route; @@ -54,11 +53,8 @@ class UserPageUpdate implements RequestHandlerInterface */ public function handle(ServerRequestInterface $request): ResponseInterface { - $tree = $request->getAttribute('tree'); - assert($tree instanceof Tree); - - $user = $request->getAttribute('user'); - assert($user instanceof UserInterface); + $tree = Validator::attributes($request)->tree(); + $user = Validator::attributes($request)->user(); $params = (array) $request->getParsedBody(); $defaults = (bool) ($params['defaults'] ?? false); diff --git a/app/Http/RequestHandlers/VerifyEmail.php b/app/Http/RequestHandlers/VerifyEmail.php index f0a9900078..0257842ad1 100644 --- a/app/Http/RequestHandlers/VerifyEmail.php +++ b/app/Http/RequestHandlers/VerifyEmail.php @@ -28,6 +28,7 @@ use Fisharebest\Webtrees\Services\EmailService; use Fisharebest\Webtrees\Services\UserService; use Fisharebest\Webtrees\SiteUser; use Fisharebest\Webtrees\User; +use Fisharebest\Webtrees\Validator; use Illuminate\Database\Capsule\Manager as DB; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; @@ -66,7 +67,7 @@ class VerifyEmail implements RequestHandlerInterface public function handle(ServerRequestInterface $request): ResponseInterface { $token = $request->getAttribute('token'); - $tree = $request->getAttribute('tree'); + $tree = Validator::attributes($request)->treeOptional(); $username = $request->getAttribute('username'); $title = I18N::translate('User verification'); @@ -80,7 +81,7 @@ class VerifyEmail implements RequestHandlerInterface // switch language to administrator settings I18N::init($administrator->getPreference(UserInterface::PREF_LANGUAGE)); - $base_url = $request->getAttribute('base_url'); + $base_url = Validator::attributes($request)->string('base_url'); /* I18N: %s is a server name/URL */ $subject = I18N::translate('New user at %s', $base_url); |
