mirror of
https://github.com/shlinkio/shlink.git
synced 2025-02-25 18:45:27 -06:00
Merge pull request #2310 from acelaya-forks/feature/less-restrictive-custom-slugs
Be less restrictive on what characters are disallowed in custom slugs
This commit is contained in:
@@ -14,6 +14,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com), and this
|
||||
|
||||
This option effectively replaces the old `REDIRECT_APPEND_EXTRA_PATH` option, which is now deprecated and will be removed in Shlink 5.0.0
|
||||
|
||||
* [#2156](https://github.com/shlinkio/shlink/issues/2156) Be less restrictive on what characters are disallowed in custom slugs.
|
||||
|
||||
All [URI-reserved characters](https://datatracker.ietf.org/doc/html/rfc3986#section-2.2) were disallowed up until now, but from now on, only the gen-delimiters are.
|
||||
|
||||
### Changed
|
||||
* [#2281](https://github.com/shlinkio/shlink/issues/2281) Update docker image to PHP 8.4
|
||||
* [#2124](https://github.com/shlinkio/shlink/issues/2124) Improve how Shlink decides if a GeoLite db file needs to be downloaded, and reduces the chances for API limits to be reached.
|
||||
|
||||
@@ -46,10 +46,10 @@ class CustomSlugValidator extends AbstractValidator
|
||||
return false;
|
||||
}
|
||||
|
||||
// URL reserved characters: https://datatracker.ietf.org/doc/html/rfc3986#section-2.2
|
||||
$reservedChars = "!*'();:@&=+$,?%#[]";
|
||||
// URL gen-delimiter reserved characters, except `/`: https://datatracker.ietf.org/doc/html/rfc3986#section-2.2
|
||||
$reservedChars = ':?#[]@';
|
||||
if (! $this->options->multiSegmentSlugsEnabled) {
|
||||
// Slashes should be allowed for multi-segment slugs
|
||||
// Slashes should only be allowed if multi-segment slugs are enabled
|
||||
$reservedChars .= '/';
|
||||
}
|
||||
|
||||
|
||||
@@ -59,13 +59,11 @@ class CustomSlugValidatorTest extends TestCase
|
||||
|
||||
public static function provideInvalidValues(): iterable
|
||||
{
|
||||
yield ['port:8080'];
|
||||
yield ['foo?bar=baz'];
|
||||
yield ['some-thing#foo'];
|
||||
yield ['call()'];
|
||||
yield ['array[]'];
|
||||
yield ['brackets[]'];
|
||||
yield ['email@example.com'];
|
||||
yield ['wildcard*'];
|
||||
yield ['$500'];
|
||||
}
|
||||
|
||||
public function createValidator(bool $multiSegmentSlugsEnabled = false): CustomSlugValidator
|
||||
|
||||
Reference in New Issue
Block a user