LoginController.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. namespace App\Http\Controllers\Auth;
  3. use App\AccountLog;
  4. use App\Http\Controllers\Controller;
  5. use App\User;
  6. use Illuminate\Foundation\Auth\AuthenticatesUsers;
  7. use App\Services\BouncerService;
  8. class LoginController extends Controller
  9. {
  10. /*
  11. |--------------------------------------------------------------------------
  12. | Login Controller
  13. |--------------------------------------------------------------------------
  14. |
  15. | This controller handles authenticating users for the application and
  16. | redirecting them to your home screen. The controller uses a trait
  17. | to conveniently provide its functionality to your applications.
  18. |
  19. */
  20. use AuthenticatesUsers;
  21. /**
  22. * Where to redirect users after login.
  23. *
  24. * @var string
  25. */
  26. protected $redirectTo = '/i/web';
  27. protected $maxAttempts = 5;
  28. protected $decayMinutes = 60;
  29. /**
  30. * Create a new controller instance.
  31. *
  32. * @return void
  33. */
  34. public function __construct()
  35. {
  36. $this->middleware('guest')->except('logout');
  37. }
  38. public function showLoginForm()
  39. {
  40. if(config('pixelfed.bouncer.cloud_ips.ban_logins')) {
  41. abort_if(BouncerService::checkIp(request()->ip()), 404);
  42. }
  43. return view('auth.login');
  44. }
  45. /**
  46. * Validate the user login request.
  47. *
  48. * @param \Illuminate\Http\Request $request
  49. *
  50. * @return void
  51. */
  52. public function validateLogin($request)
  53. {
  54. if(config('pixelfed.bouncer.cloud_ips.ban_logins')) {
  55. abort_if(BouncerService::checkIp($request->ip()), 404);
  56. }
  57. $rules = [
  58. $this->username() => 'required|email',
  59. 'password' => 'required|string|min:6',
  60. ];
  61. if(config('captcha.enabled') || config('captcha.active.login')) {
  62. $rules['h-captcha-response'] = 'required|captcha';
  63. }
  64. $this->validate($request, $rules);
  65. }
  66. /**
  67. * The user has been authenticated.
  68. *
  69. * @param \Illuminate\Http\Request $request
  70. * @param mixed $user
  71. *
  72. * @return mixed
  73. */
  74. protected function authenticated($request, $user)
  75. {
  76. if($user->status == 'deleted') {
  77. return;
  78. }
  79. $log = new AccountLog();
  80. $log->user_id = $user->id;
  81. $log->item_id = $user->id;
  82. $log->item_type = 'App\User';
  83. $log->action = 'auth.login';
  84. $log->message = 'Account Login';
  85. $log->link = null;
  86. $log->ip_address = $request->ip();
  87. $log->user_agent = $request->userAgent();
  88. $log->save();
  89. }
  90. }