mirror of
https://github.com/shlinkio/shlink.git
synced 2026-08-11 13:34:52 -05:00
Added validation to not found redirects for domain
This commit is contained in:
@@ -6,6 +6,8 @@ namespace Shlinkio\Shlink\Rest\Action\Domain\Request;
|
||||
|
||||
use Shlinkio\Shlink\Core\Config\NotFoundRedirectConfigInterface;
|
||||
use Shlinkio\Shlink\Core\Config\NotFoundRedirects;
|
||||
use Shlinkio\Shlink\Core\Domain\Validation\DomainRedirectsInputFilter;
|
||||
use Shlinkio\Shlink\Core\Exception\ValidationException;
|
||||
|
||||
use function array_key_exists;
|
||||
|
||||
@@ -30,17 +32,33 @@ class DomainRedirectsRequest
|
||||
return $instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws ValidationException
|
||||
*/
|
||||
private function validateAndInit(array $payload): void
|
||||
{
|
||||
// TODO Validate data
|
||||
$this->baseUrlRedirectWasProvided = array_key_exists('baseUrlRedirect', $payload);
|
||||
$this->regular404RedirectWasProvided = array_key_exists('regular404Redirect', $payload);
|
||||
$this->invalidShortUrlRedirectWasProvided = array_key_exists('invalidShortUrlRedirect', $payload);
|
||||
$inputFilter = DomainRedirectsInputFilter::withData($payload);
|
||||
if (! $inputFilter->isValid()) {
|
||||
throw ValidationException::fromInputFilter($inputFilter);
|
||||
}
|
||||
|
||||
$this->authority = $payload['domain'];
|
||||
$this->baseUrlRedirect = $payload['baseUrlRedirect'] ?? null;
|
||||
$this->regular404Redirect = $payload['regular404Redirect'] ?? null;
|
||||
$this->invalidShortUrlRedirect = $payload['invalidShortUrlRedirect'] ?? null;
|
||||
$this->baseUrlRedirectWasProvided = array_key_exists(
|
||||
DomainRedirectsInputFilter::BASE_URL_REDIRECT,
|
||||
$payload,
|
||||
);
|
||||
$this->regular404RedirectWasProvided = array_key_exists(
|
||||
DomainRedirectsInputFilter::REGULAR_404_REDIRECT,
|
||||
$payload,
|
||||
);
|
||||
$this->invalidShortUrlRedirectWasProvided = array_key_exists(
|
||||
DomainRedirectsInputFilter::INVALID_SHORT_URL_REDIRECT,
|
||||
$payload,
|
||||
);
|
||||
|
||||
$this->authority = $inputFilter->getValue(DomainRedirectsInputFilter::DOMAIN);
|
||||
$this->baseUrlRedirect = $inputFilter->getValue(DomainRedirectsInputFilter::BASE_URL_REDIRECT);
|
||||
$this->regular404Redirect = $inputFilter->getValue(DomainRedirectsInputFilter::REGULAR_404_REDIRECT);
|
||||
$this->invalidShortUrlRedirect = $inputFilter->getValue(DomainRedirectsInputFilter::INVALID_SHORT_URL_REDIRECT);
|
||||
}
|
||||
|
||||
public function authority(): string
|
||||
@@ -50,7 +68,7 @@ class DomainRedirectsRequest
|
||||
|
||||
public function toNotFoundRedirects(?NotFoundRedirectConfigInterface $defaults = null): NotFoundRedirects
|
||||
{
|
||||
return new NotFoundRedirects(
|
||||
return NotFoundRedirects::withRedirects(
|
||||
$this->baseUrlRedirectWasProvided ? $this->baseUrlRedirect : $defaults?->baseUrlRedirect(),
|
||||
$this->regular404RedirectWasProvided ? $this->regular404Redirect : $defaults?->regular404Redirect(),
|
||||
$this->invalidShortUrlRedirectWasProvided
|
||||
|
||||
@@ -20,7 +20,7 @@ class DomainFixture extends AbstractFixture
|
||||
$manager->persist(Domain::withAuthority('this_domain_is_detached.com'));
|
||||
|
||||
$detachedWithRedirects = Domain::withAuthority('detached-with-redirects.com');
|
||||
$detachedWithRedirects->configureNotFoundRedirects(new NotFoundRedirects('foo.com', 'bar.com'));
|
||||
$detachedWithRedirects->configureNotFoundRedirects(NotFoundRedirects::withRedirects('foo.com', 'bar.com'));
|
||||
$manager->persist($detachedWithRedirects);
|
||||
|
||||
$manager->flush();
|
||||
|
||||
Reference in New Issue
Block a user