Bootstrap.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. namespace Dcat\Admin\Middleware;
  3. use Dcat\Admin\Admin;
  4. use Dcat\Admin\Support\Helper;
  5. use Dcat\Admin\Widgets\DarkModeSwitcher;
  6. use Illuminate\Http\Request;
  7. class Bootstrap
  8. {
  9. public function handle(Request $request, \Closure $next)
  10. {
  11. $this->includeBootstrapFile();
  12. $this->addScript();
  13. $this->fireEvents();
  14. $this->setUpDarkMode();
  15. $response = $next($request);
  16. $this->storeCurrentUrl($request);
  17. return $response;
  18. }
  19. protected function setUpDarkMode()
  20. {
  21. if (config('admin.layout.dark_mode_switch')) {
  22. Admin::navbar()->right((new DarkModeSwitcher())->render());
  23. }
  24. }
  25. protected function includeBootstrapFile()
  26. {
  27. if (is_file($bootstrap = admin_path('bootstrap.php'))) {
  28. require $bootstrap;
  29. }
  30. }
  31. protected function addScript()
  32. {
  33. $token = csrf_token();
  34. Admin::script("Dcat.token = \"$token\";");
  35. }
  36. protected function fireEvents()
  37. {
  38. Admin::callBooting();
  39. Admin::callBooted();
  40. }
  41. /**
  42. * @param \Illuminate\Http\Request
  43. *
  44. * @return void
  45. */
  46. protected function storeCurrentUrl(Request $request)
  47. {
  48. if (
  49. $request->method() === 'GET'
  50. && $request->route()
  51. && ! Helper::isAjaxRequest()
  52. && ! $this->prefetch($request)
  53. ) {
  54. Admin::addIgnoreQueryName(['_token', '_pjax']);
  55. Helper::setPreviousUrl(
  56. Helper::fullUrlWithoutQuery(Admin::getIgnoreQueryNames())
  57. );
  58. }
  59. }
  60. /**
  61. * @param \Illuminate\Http\Request $request
  62. *
  63. * @return bool
  64. */
  65. public function prefetch($request)
  66. {
  67. if (method_exists($request, 'prefetch')) {
  68. return $request->prefetch();
  69. }
  70. return strcasecmp($request->server->get('HTTP_X_MOZ'), 'prefetch') === 0 ||
  71. strcasecmp($request->headers->get('Purpose'), 'prefetch') === 0;
  72. }
  73. }