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

Размер файла: 2.33Kb
  1. <?php
  2.  
  3. declare(strict_types=1);
  4.  
  5. namespace App\Http\Controllers\User;
  6.  
  7. use App\Classes\Validator;
  8. use App\Http\Controllers\Controller;
  9. use App\Models\Banhist;
  10. use App\Models\User;
  11. use Illuminate\Http\RedirectResponse;
  12. use Illuminate\Http\Request;
  13. use Illuminate\View\View;
  14.  
  15. class BanController extends Controller
  16. {
  17. /**
  18. * User Ban
  19. *
  20. * @param Request $request
  21. * @param Validator $validator
  22. *
  23. * @return View|RedirectResponse
  24. */
  25. public function ban(Request $request, Validator $validator)
  26. {
  27. if (! $user = getUser()) {
  28. abort(403, __('main.not_authorized'));
  29. }
  30.  
  31. if ($user->level !== User::BANNED) {
  32. abort(200, __('users.not_banned'));
  33. }
  34.  
  35. if ($user->timeban <= SITETIME) {
  36. $user->update([
  37. 'level' => User::USER,
  38. 'timeban' => 0,
  39. ]);
  40.  
  41. setFlash('success', __('users.ban_expired'));
  42.  
  43. return redirect('/');
  44. }
  45.  
  46. $banhist = Banhist::query()
  47. ->where('user_id', $user->id)
  48. ->whereIn('type', ['ban', 'change'])
  49. ->orderByDesc('created_at')
  50. ->first();
  51.  
  52. if ($banhist && $request->isMethod('post')) {
  53. $msg = $request->input('msg');
  54.  
  55. $admins = User::query()->whereIn('level', [User::BOSS, User::ADMIN])->get();
  56.  
  57. $validator
  58. ->true(setting('addbansend'), __('users.explain_forbidden'))
  59. ->false($banhist->explain, __('users.explain_repeat'))
  60. ->true($admins->isNotEmpty(), __('users.admins_not_found'))
  61. ->length($msg, 5, 1000, ['text' => __('validator.text')]);
  62.  
  63. if ($validator->isValid()) {
  64. $text = textNotice('explain', ['message' => antimat($msg)]);
  65.  
  66. /** @var User $admin */
  67. foreach ($admins as $admin) {
  68. $admin->sendMessage($user, $text, false);
  69. }
  70.  
  71. $banhist->update([
  72. 'explain' => 1,
  73. ]);
  74.  
  75. setFlash('success', __('users.explain_sent_success'));
  76.  
  77. return redirect('ban');
  78. }
  79.  
  80. setInput($request->all());
  81. setFlash('danger', $validator->getErrors());
  82. }
  83.  
  84. return view('users/bans', compact('user', 'banhist'));
  85. }
  86. }