SiteMaintenanceMiddleware.php 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. <?php
  2. namespace App\Http\Middleware;
  3. use App\Models\Setting;
  4. use Closure;
  5. use Illuminate\Http\Request;
  6. use Symfony\Component\HttpFoundation\Response;
  7. /*
  8. * SiteMaintenanceMiddleware — показывает заглушку «Сайт на обслуживании»
  9. * всем гостям и пользователям с ролью ниже admin/superadmin,
  10. * если включена настройка site_maintenance = '1'.
  11. * Администраторы и супер-администраторы видят сайт в обычном режиме.
  12. */
  13. class SiteMaintenanceMiddleware
  14. {
  15. public function handle(Request $request, Closure $next): Response
  16. {
  17. if (Setting::get('site_maintenance') !== '1') {
  18. return $next($request);
  19. }
  20. $user = $request->user();
  21. // Пропускаем администраторов и супер-администраторов
  22. if ($user && in_array($user->role, ['admin', 'superadmin'], true)) {
  23. return $next($request);
  24. }
  25. return response()->view('errors.maintenance', [], 503);
  26. }
  27. }