1 | <?php |
||
21 | class CheckForMaintenanceMode extends MiddlewareAbstract |
||
22 | { |
||
23 | /** |
||
24 | * Handle an incoming request. |
||
25 | * |
||
26 | * @param \Illuminate\Http\Request $request |
||
27 | * @param \Closure $next |
||
28 | * |
||
29 | * @return mixed |
||
30 | * |
||
31 | * @throws \Symfony\Component\HttpKernel\Exception\HttpException |
||
32 | */ |
||
33 | public function handle(Request $request, Closure $next) |
||
34 | { |
||
35 | // Allow admin & login page to always view the site event in maintenance mode |
||
36 | $this->isUserAllowedToAccess($request); |
||
37 | |||
38 | // Show message to administrator |
||
39 | $this->siteDownMessage(); |
||
40 | |||
41 | return $next($request); |
||
42 | } |
||
43 | |||
44 | /** |
||
45 | * @param Request $request |
||
46 | * |
||
47 | * @return void |
||
48 | */ |
||
49 | protected function isUserAllowedToAccess(Request $request) |
||
50 | { |
||
51 | $siteDown = $this->app->isDownForMaintenance(); |
||
52 | $isLogin = $request->is('/', 'logout', 'signin'); |
||
53 | |||
54 | if ($siteDown && !$isLogin && ($this->getAuth()->guest() || !$this->getLoggedUser()->isAdmin())) { |
||
55 | throw new HttpException(503); |
||
56 | } |
||
57 | } |
||
58 | |||
59 | /** |
||
60 | * @return void |
||
61 | */ |
||
62 | protected function siteDownMessage() |
||
68 | } |
||
69 |