mirror of
https://github.com/nextcloud/server.git
synced 2026-04-25 16:19:06 -04:00
fix(app-store): Also proxy images of locally installed apps
Before this only app store apps got their screenshots proxied, but this will cause locally installed apps to not be correctly shown on the app-store. Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
This commit is contained in:
parent
c3d52f6681
commit
2198fe16c9
1 changed files with 15 additions and 1 deletions
|
|
@ -229,11 +229,25 @@ class AppSettingsController extends Controller {
|
|||
], $categories);
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert URL to proxied URL so CSP is no problem
|
||||
*/
|
||||
private function createProxyPreviewUrl(string $url): string {
|
||||
if ($url === '') {
|
||||
return '';
|
||||
}
|
||||
return 'https://usercontent.apps.nextcloud.com/' . base64_encode($url);
|
||||
}
|
||||
|
||||
private function fetchApps() {
|
||||
$appClass = new \OC_App();
|
||||
$apps = $appClass->listAllApps();
|
||||
foreach ($apps as $app) {
|
||||
$app['installed'] = true;
|
||||
// locally installed apps have a flatted screenshot property
|
||||
if (isset($app['screenshot'][0])) {
|
||||
$app['screenshot'] = $this->createProxyPreviewUrl($app['screenshot'][0]);
|
||||
}
|
||||
$this->allApps[$app['id']] = $app;
|
||||
}
|
||||
|
||||
|
|
@ -292,7 +306,7 @@ class AppSettingsController extends Controller {
|
|||
$apps = array_map(function (array $appData) use ($dependencyAnalyzer, $ignoreMaxApps) {
|
||||
if (isset($appData['appstoreData'])) {
|
||||
$appstoreData = $appData['appstoreData'];
|
||||
$appData['screenshot'] = isset($appstoreData['screenshots'][0]['url']) ? 'https://usercontent.apps.nextcloud.com/' . base64_encode($appstoreData['screenshots'][0]['url']) : '';
|
||||
$appData['screenshot'] = $this->createProxyPreviewUrl($appstoreData['screenshots'][0]['url'] ?? '');
|
||||
$appData['category'] = $appstoreData['categories'];
|
||||
$appData['releases'] = $appstoreData['releases'];
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue