diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 93e48967..971e0daa 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -31,6 +31,7 @@ class Kernel extends HttpKernel \Illuminate\Session\Middleware\StartSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\DetectLanguagePrefer::class, + \App\Http\Middleware\ForbiddenIE::class, ], 'static' => [], diff --git a/app/Http/Middleware/ForbiddenIE.php b/app/Http/Middleware/ForbiddenIE.php new file mode 100644 index 00000000..a053307e --- /dev/null +++ b/app/Http/Middleware/ForbiddenIE.php @@ -0,0 +1,19 @@ +userAgent(), ['Trident', 'MSIE'])) { + throw new PrettyPageException(trans('errors.http.ie')); + } + + return $next($request); + } +} diff --git a/resources/lang/en/errors.yml b/resources/lang/en/errors.yml index 05f8518e..7b4bcdce 100644 --- a/resources/lang/en/errors.yml +++ b/resources/lang/en/errors.yml @@ -5,6 +5,7 @@ http: msg-503: The application is now in maintenance mode. method-not-allowed: Method not allowed. csrf-token-mismatch: Token does not match, try reloading the page. + ie: We don't support Internet Explorer. Please switch to other modern browsers, such as Firefox or Chrome. general: title: Error occurred diff --git a/resources/lang/zh_CN/errors.yml b/resources/lang/zh_CN/errors.yml index c8a1b3ec..832c1bdf 100644 --- a/resources/lang/zh_CN/errors.yml +++ b/resources/lang/zh_CN/errors.yml @@ -5,6 +5,7 @@ http: msg-503: 网站维护中 method-not-allowed: 不允许的 HTTP 请求方法 csrf-token-mismatch: Token 不正确,请尝试刷新页面 + ie: 本站不支持 Internet Explorer,请使用其它现代浏览器(如 Firefox 或 Chrome)。 general: title: 出现错误 diff --git a/tests/MiddlewareTest.php b/tests/MiddlewareTest.php index e34baf31..103278c2 100644 --- a/tests/MiddlewareTest.php +++ b/tests/MiddlewareTest.php @@ -214,4 +214,10 @@ class MiddlewareTest extends TestCase $this->get('/user')->assertViewIs('user.index'); $this->get('/user/player/bind')->assertRedirect('/user'); } + + public function testForbiddenIE() + { + $this->get('/', ['user-agent' => 'MSIE'])->assertSee(trans('errors.http.ie')); + $this->get('/', ['user-agent' => 'Trident'])->assertSee(trans('errors.http.ie')); + } }