Skip to content

Commit 813cccb

Browse files
authored
Merge pull request #11119 from nanaya/media-url-middleware
Clean up media/wiki image url handling
2 parents da660a4 + 3910ae1 commit 813cccb

File tree

6 files changed

+13
-49
lines changed

6 files changed

+13
-49
lines changed

app/Http/Controllers/BeatmapDiscussionsController.php

+5-1
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,11 @@ public function index()
120120

121121
public function mediaUrl()
122122
{
123-
$url = get_string(request('url'));
123+
$url = presence(get_string(request('url')));
124+
125+
if (!isset($url)) {
126+
return response('Missing url parameter', 422);
127+
}
124128

125129
// Tell browser not to request url for a while.
126130
return redirect(proxy_media($url))->header('Cache-Control', 'max-age=600');

app/Http/Controllers/WikiController.php

+5-5
Original file line numberDiff line numberDiff line change
@@ -123,16 +123,16 @@ public function image($path)
123123
return response('Invalid file format', 422);
124124
}
125125

126-
$image = Wiki\Image::lookupForController($path, Request::url(), Request::header('referer'));
127-
128-
request()->attributes->set('strip_cookies', true);
126+
$image = (new Wiki\Image($path))->sync();
129127

130128
if (!$image->isVisible()) {
131129
return response('Not found', 404);
132130
}
133131

134-
return response($image->get()['content'], 200)
135-
->header('Content-Type', $image->get()['type'])
132+
$imageData = $image->get();
133+
134+
return response($imageData['content'], 200)
135+
->header('Content-Type', $imageData['type'])
136136
// 10 years max-age
137137
->header('Cache-Control', 'max-age=315360000, public');
138138
}

app/Http/Kernel.php

-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ class Kernel extends HttpKernel
2727
Middleware\VerifyUserAlways::class,
2828
],
2929
'web' => [
30-
Middleware\StripCookies::class,
3130
Middleware\EncryptCookies::class,
3231
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
3332
\Illuminate\Session\Middleware\StartSession::class,

app/Http/Middleware/StripCookies.php

-23
This file was deleted.

app/Models/Wiki/Image.php

-17
Original file line numberDiff line numberDiff line change
@@ -18,23 +18,6 @@ class Image implements WikiObject
1818

1919
private $cache;
2020

21-
public static function lookupForController($path, $url = null, $referrer = null)
22-
{
23-
$url = presence($url);
24-
$referrer = presence($referrer);
25-
$image = (new static($path))->sync();
26-
27-
if (!$image->isVisible()) {
28-
if ($url !== null && $referrer !== null && starts_with($url, $referrer)) {
29-
$newPath = 'shared/'.substr($url, strlen($referrer));
30-
31-
return (new static($newPath))->sync();
32-
}
33-
}
34-
35-
return $image;
36-
}
37-
3821
public function __construct($path)
3922
{
4023
$this->path = OsuWiki::cleanPath($path);

routes/web.php

+3-2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55

66
use App\Http\Middleware\ThrottleRequests;
77

8+
Route::get('wiki/images/{path}', 'WikiController@image')->name('wiki.image')->where('path', '.+');
9+
Route::get('beatmapsets/discussions/media-url', 'BeatmapDiscussionsController@mediaUrl')->name('beatmapsets.discussions.media-url');
10+
811
Route::group(['middleware' => ['web']], function () {
912
Route::group(['as' => 'admin.', 'prefix' => 'admin', 'namespace' => 'Admin'], function () {
1013
Route::get('/beatmapsets/{beatmapset}/covers', 'BeatmapsetsController@covers')->name('beatmapsets.covers');
@@ -70,7 +73,6 @@
7073
Route::resource('watches', 'BeatmapsetWatchesController', ['only' => ['update', 'destroy']]);
7174

7275
Route::group(['prefix' => 'discussions', 'as' => 'discussions.'], function () {
73-
Route::get('media-url', 'BeatmapDiscussionsController@mediaUrl')->name('media-url');
7476
Route::put('{discussion}/vote', 'BeatmapDiscussionsController@vote')->name('vote');
7577
Route::post('{discussion}/restore', 'BeatmapDiscussionsController@restore')->name('restore');
7678
Route::post('{discussion}/deny-kudosu', 'BeatmapDiscussionsController@denyKudosu')->name('deny-kudosu');
@@ -325,7 +327,6 @@
325327
Route::resource('users', 'UsersController', ['only' => ['store']]);
326328

327329
Route::get('wiki/{locale}/Sitemap', 'WikiController@sitemap')->name('wiki.sitemap');
328-
Route::get('wiki/images/{path}', 'WikiController@image')->name('wiki.image')->where('path', '.+');
329330
Route::get('wiki/{locale?}/{path?}', 'WikiController@show')->name('wiki.show')->where('path', '.+');
330331
Route::put('wiki/{locale}/{path}', 'WikiController@update')->where('path', '.+');
331332
Route::get('wiki-suggestions', 'WikiController@suggestions')->name('wiki-suggestions');

0 commit comments

Comments
 (0)