Просмотр файла app/Http/Middleware/AuthenticateCookie.php

Размер файла: 2.95Kb
  1. <?php
  2.  
  3. namespace App\Http\Middleware;
  4.  
  5. use App\Models\Login;
  6. use App\Models\User;
  7. use Closure;
  8. use Illuminate\Http\Request;
  9. use Illuminate\Support\Facades\App;
  10. use Illuminate\Support\Facades\Route;
  11. use Illuminate\Support\Facades\View;
  12.  
  13. class AuthenticateCookie
  14. {
  15. /**
  16. * Handle an incoming request.
  17. *
  18. * @param Request $request
  19. * @param Closure $next
  20. *
  21. * @return mixed
  22. */
  23. public function handle(Request $request, Closure $next)
  24. {
  25. if (Route::has('install') && $request->is('install*')) {
  26. return $next($request);
  27. }
  28.  
  29. $this->cookieAuth($request);
  30.  
  31. if ($user = getUser()) {
  32. if ($user->isBanned() && ! $request->is('ban', 'rules', 'logout')) {
  33. return redirect('ban?user=' . $user->login);
  34. }
  35.  
  36. if ($user->isPended() && ! $request->is('key', 'ban', 'logout', 'captcha')) {
  37. return redirect('key?user=' . $user->login);
  38. }
  39.  
  40. $user->updatePrivate();
  41. $user->gettingBonus();
  42.  
  43. /* Установка сессионных переменных */
  44. if ($request->session()->missing('hits')) {
  45. $request->session()->put('hits', 0);
  46. }
  47. }
  48.  
  49. $this->setSetting($user, $request);
  50.  
  51. return $next($request);
  52. }
  53.  
  54. /**
  55. * Авторизует по кукам
  56. *
  57. * @param Request $request
  58. *
  59. * @return void
  60. */
  61. private function cookieAuth(Request $request): void
  62. {
  63. if (
  64. $request->hasCookie('login') &&
  65. $request->hasCookie('password') &&
  66. $request->session()->missing('id')
  67. ) {
  68. $login = $request->cookie('login');
  69. $password = $request->cookie('password');
  70.  
  71. $user = getUserByLogin($login);
  72.  
  73. if ($user && $login === $user->login && $password === $user->password) {
  74. $request->session()->put('id', $user->id);
  75. $request->session()->put('password', $user->password);
  76. $request->session()->put('online');
  77.  
  78. $user->saveVisit(Login::COOKIE);
  79. }
  80. }
  81. }
  82.  
  83. /**
  84. * Устанавливает настройки
  85. *
  86. * @param User|false $user
  87. * @param Request $request
  88. *
  89. * @return void
  90. */
  91. private function setSetting($user, Request $request): void
  92. {
  93. $language = $user->language ?? setting('language');
  94. $theme = $user->themes ?? setting('themes');
  95.  
  96. if ($request->session()->has('language')) {
  97. $language = $request->session()->get('language');
  98. }
  99.  
  100. if (! file_exists(resource_path('lang/' . $language))) {
  101. $language = setting('language');
  102. }
  103.  
  104. if (! file_exists(public_path('themes/' . $theme))) {
  105. $theme = setting('themes');
  106. }
  107.  
  108. App::setLocale($language);
  109. View::addLocation(public_path('themes/' . $theme . '/views'));
  110. }
  111. }