|
@@ -7,6 +7,8 @@ use App\Http\Controllers\Controller;
|
|
use App\User;
|
|
use App\User;
|
|
use Illuminate\Foundation\Auth\AuthenticatesUsers;
|
|
use Illuminate\Foundation\Auth\AuthenticatesUsers;
|
|
use App\Services\BouncerService;
|
|
use App\Services\BouncerService;
|
|
|
|
+use Illuminate\Http\Request;
|
|
|
|
+use Illuminate\Validation\ValidationException;
|
|
|
|
|
|
class LoginController extends Controller
|
|
class LoginController extends Controller
|
|
{
|
|
{
|
|
@@ -70,8 +72,16 @@ class LoginController extends Controller
|
|
'password' => 'required|string|min:6',
|
|
'password' => 'required|string|min:6',
|
|
];
|
|
];
|
|
|
|
|
|
- if(config('captcha.enabled') || config('captcha.active.login')) {
|
|
|
|
- $rules['h-captcha-response'] = 'required|captcha';
|
|
|
|
|
|
+ if(
|
|
|
|
+ config('captcha.enabled') ||
|
|
|
|
+ config('captcha.active.login') ||
|
|
|
|
+ (
|
|
|
|
+ config('captcha.triggers.login.enabled') &&
|
|
|
|
+ request()->session()->has('login_attempts') &&
|
|
|
|
+ request()->session()->get('login_attempts') >= config('captcha.triggers.login.attempts')
|
|
|
|
+ )
|
|
|
|
+ ) {
|
|
|
|
+ $rules['h-captcha-response'] = 'required|filled|captcha|min:5';
|
|
}
|
|
}
|
|
|
|
|
|
$this->validate($request, $rules);
|
|
$this->validate($request, $rules);
|
|
@@ -102,4 +112,28 @@ class LoginController extends Controller
|
|
$log->user_agent = $request->userAgent();
|
|
$log->user_agent = $request->userAgent();
|
|
$log->save();
|
|
$log->save();
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Get the failed login response instance.
|
|
|
|
+ *
|
|
|
|
+ * @param \Illuminate\Http\Request $request
|
|
|
|
+ * @return \Symfony\Component\HttpFoundation\Response
|
|
|
|
+ *
|
|
|
|
+ * @throws \Illuminate\Validation\ValidationException
|
|
|
|
+ */
|
|
|
|
+ protected function sendFailedLoginResponse(Request $request)
|
|
|
|
+ {
|
|
|
|
+ if(config('captcha.triggers.login.enabled')) {
|
|
|
|
+ if ($request->session()->has('login_attempts')) {
|
|
|
|
+ $ct = $request->session()->get('login_attempts');
|
|
|
|
+ $request->session()->put('login_attempts', $ct + 1);
|
|
|
|
+ } else {
|
|
|
|
+ $request->session()->put('login_attempts', 1);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ throw ValidationException::withMessages([
|
|
|
|
+ $this->username() => [trans('auth.failed')],
|
|
|
|
+ ]);
|
|
|
|
+ }
|
|
}
|
|
}
|