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

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