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

Размер файла: 3.13Kb
  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\Ban;
  9. use App\Models\User;
  10. use Illuminate\Http\RedirectResponse;
  11. use Illuminate\Http\Request;
  12. use Illuminate\View\View;
  13.  
  14. class IpBanController extends AdminController
  15. {
  16. /**
  17. * Главная страница
  18. *
  19. * @param Request $request
  20. * @param Validator $validator
  21. *
  22. * @return View|RedirectResponse
  23. */
  24. public function index(Request $request, Validator $validator)
  25. {
  26. if ($request->isMethod('post')) {
  27. $ip = $request->input('ip');
  28.  
  29. $validator->equal($request->input('_token'), csrf_token(), __('validator.token'))
  30. ->ip($ip, ['ip' => __('admin.ipbans.ip_invalid')]);
  31.  
  32. $duplicate = Ban::query()->where('ip', $ip)->first();
  33. $validator->empty($duplicate, ['ip' => __('admin.ipbans.ip_exists')]);
  34.  
  35. if ($validator->isValid()) {
  36. Ban::query()->create([
  37. 'ip' => $ip,
  38. 'user_id' => getUser('id'),
  39. 'created_at' => SITETIME,
  40. ]);
  41.  
  42. ipBan(true);
  43.  
  44. setFlash('success', __('admin.ipbans.ip_success_added'));
  45.  
  46. return redirect('admin/ipbans');
  47. }
  48.  
  49. setInput($request->all());
  50. setFlash('danger', $validator->getErrors());
  51. }
  52.  
  53. $logs = Ban::query()
  54. ->orderByDesc('created_at')
  55. ->with('user')
  56. ->paginate(setting('ipbanlist'));
  57.  
  58. return view('admin/ipbans/index', compact('logs'));
  59. }
  60.  
  61. /**
  62. * Удаление ip
  63. *
  64. * @param Request $request
  65. * @param Validator $validator
  66. *
  67. * @return RedirectResponse
  68. */
  69. public function delete(Request $request, Validator $validator): RedirectResponse
  70. {
  71. $page = int($request->input('page', 1));
  72. $del = intar($request->input('del'));
  73.  
  74. $validator->equal($request->input('_token'), csrf_token(), __('validator.token'))
  75. ->true($del, __('validator.deletion'));
  76.  
  77. if ($validator->isValid()) {
  78. Ban::query()->whereIn('id', $del)->delete();
  79. ipBan(true);
  80.  
  81. setFlash('success', __('admin.ipbans.ip_selected_deleted'));
  82. } else {
  83. setFlash('danger', $validator->getErrors());
  84. }
  85.  
  86. return redirect('admin/ipbans?page=' . $page);
  87. }
  88.  
  89. /**
  90. * Очистка ip
  91. *
  92. * @param Request $request
  93. * @param Validator $validator
  94. *
  95. * @return RedirectResponse
  96. */
  97. public function clear(Request $request, Validator $validator): RedirectResponse
  98. {
  99. $validator
  100. ->equal($request->input('_token'), csrf_token(), __('validator.token'))
  101. ->true(isAdmin(User::BOSS), __('main.page_only_owner'));
  102.  
  103. if ($validator->isValid()) {
  104. Ban::query()->truncate();
  105. ipBan(true);
  106.  
  107. setFlash('success', __('admin.ipbans.ip_success_cleared'));
  108. } else {
  109. setFlash('danger', $validator->getErrors());
  110. }
  111.  
  112. return redirect('admin/ipbans');
  113. }
  114. }