Honor cms.linkPolicy config in ImageResizer (#5401)

This commit is contained in:
Marc Jauvin 2021-02-26 14:53:18 -05:00 committed by GitHub
parent 59de6e1d25
commit 00f65ca725
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 40 additions and 2 deletions

View File

@ -499,7 +499,13 @@ class ImageResizer
// Store the current configuration
$this->storeConfig();
return Url::to("/resizer/$identifier/$resizedUrl");
$url = "/resizer/$identifier/$resizedUrl";
if (Config::get('cms.linkPolicy', 'detect') === 'force') {
$url = Url::to($url);
}
return $url;
}
/**
@ -523,7 +529,13 @@ class ImageResizer
// Ensure that a properly encoded URL is returned
$segments = explode('/', $url);
$lastSegment = array_pop($segments);
return implode('/', $segments) . '/' . rawurlencode(rawurldecode($lastSegment));
$url = implode('/', $segments) . '/' . rawurlencode(rawurldecode($lastSegment));
if (Config::get('cms.linkPolicy', 'detect') === 'force') {
$url = Url::to($url);
}
return $url;
}
/**

View File

@ -335,6 +335,32 @@ class ImageResizerTest extends PluginTestCase
$this->assertStringContainsString('october%20space', $imageResizer->getResizedUrl(), 'Resized URLs are not properly URL encoded');
}
public function testGetResizedUrl()
{
$imageResizer = new ImageResizer((new CmsController())->themeUrl('assets/images/october.png'));
Config::set('cms.linkPolicy', 'force');
$url = $imageResizer->getResizedUrl();
$this->assertTrue(starts_with($url, 'http'));
Config::set('cms.linkPolicy', 'detect');
$url = $imageResizer->getResizedUrl();
$this->assertTrue(starts_with($url, Config::get('cms.storage.resized.path', '/storage/app/resized')));
}
public function testGetResizerUrl()
{
$imageResizer = new ImageResizer((new CmsController())->themeUrl('assets/images/october.png'));
Config::set('cms.linkPolicy', 'force');
$url = $imageResizer->getResizerUrl();
$this->assertTrue(starts_with($url, 'http'));
Config::set('cms.linkPolicy', 'detect');
$url = $imageResizer->getResizerUrl();
$this->assertTrue(starts_with($url, '/resizer/'));
}
protected function setUpStorage()
{
$this->app->useStoragePath(base_path('storage/temp'));