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

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