Просмотр файла app/Http/Controllers/Admin/ErrorController.php

Размер файла: 2.14Kb
  1. <?php
  2.  
  3. declare(strict_types=1);
  4.  
  5. namespace App\Http\Controllers\Admin;
  6.  
  7. use App\Classes\Validator;
  8. use App\Models\Error;
  9. use App\Models\User;
  10. use Illuminate\Http\RedirectResponse;
  11. use Illuminate\Http\Request;
  12. use Illuminate\View\View;
  13.  
  14. class ErrorController extends AdminController
  15. {
  16. /**
  17. * @var array
  18. */
  19. private $lists;
  20.  
  21. /**
  22. * @var int
  23. */
  24. private $code;
  25.  
  26. /**
  27. * Конструктор
  28. *
  29. * @param Request $request
  30. */
  31. public function __construct(Request $request)
  32. {
  33. $this->code = int($request->input('code', 404));
  34. $this->lists = [
  35. 401 => 401,
  36. 403 => 403,
  37. 404 => 404,
  38. 405 => 405,
  39. 419 => 419,
  40. 429 => 429,
  41. 500 => 500,
  42. 503 => 503,
  43. 666 => __('admin.errors.autobans'),
  44. ];
  45.  
  46. if (! isset($this->lists[$this->code])) {
  47. abort(404, __('admin.errors.logs_not_exist'));
  48. }
  49. }
  50.  
  51. /**
  52. * Главная страница
  53. *
  54. * @return View
  55. */
  56. public function index(): View
  57. {
  58. $lists = $this->lists;
  59. $code = $this->code;
  60.  
  61. $logs = Error::query()
  62. ->where('code', $code)
  63. ->orderByDesc('created_at')
  64. ->with('user')
  65. ->paginate(setting('loglist'))
  66. ->appends(['code' => $code]);
  67.  
  68. return view('admin/errors/index', compact('logs', 'code', 'lists'));
  69. }
  70.  
  71. /**
  72. * Очистка логов
  73. *
  74. * @param Request $request
  75. * @param Validator $validator
  76. *
  77. * @return RedirectResponse
  78. */
  79. public function clear(Request $request, Validator $validator): RedirectResponse
  80. {
  81. $validator
  82. ->equal($request->input('_token'), csrf_token(), __('validator.token'))
  83. ->true(isAdmin(User::BOSS), __('main.page_only_admins'));
  84.  
  85. if ($validator->isValid()) {
  86. Error::query()->truncate();
  87.  
  88. setFlash('success', __('admin.errors.success_cleared'));
  89. } else {
  90. setFlash('danger', $validator->getErrors());
  91. }
  92.  
  93. return redirect('admin/errors');
  94. }
  95. }