diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index fb919457..a1f048dc 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -71,8 +71,10 @@ public function login(LoginRequest $request) */ public function logout(Request $request) { + $user = $request->user(); Auth::logout(); - Log::info('User logged out'); + + Log::info(sprintf('User id #%s logged out', $user->id)); return response()->json(['message' => 'signed out'], Response::HTTP_OK); } @@ -151,6 +153,6 @@ protected function authenticated(Request $request, $user) $user->last_seen_at = Carbon::now()->format('Y-m-d H:i:s'); $user->save(); - Log::info('User authenticated'); + Log::info(sprintf('User id #%s authenticated using login & pwd', $user->id)); } } diff --git a/app/Http/Controllers/Auth/WebAuthnLoginController.php b/app/Http/Controllers/Auth/WebAuthnLoginController.php index 826a63ac..6161b565 100644 --- a/app/Http/Controllers/Auth/WebAuthnLoginController.php +++ b/app/Http/Controllers/Auth/WebAuthnLoginController.php @@ -43,16 +43,13 @@ public function options(AssertionRequest $request) : Responsable|JsonResponse break; } - // Since 2FAuth is single user designed we fetch the user instance. - // This lets Larapass validate the request without the need to ask - // the visitor for an email address. - $user = User::first(); - - return $user - ? $request->toVerify($user) - : response()->json([ - 'message' => 'no registered user', - ], 400); + return $request->toVerify($request->validate([ + 'email' => [ + 'required', + 'email', + new \App\Rules\CaseInsensitiveEmailExists + ] + ])); } /** @@ -69,7 +66,7 @@ public function login(AssertedRequest $request) $response = $request->response; // Some authenticators do not send a userHandle so we hack the response to be compliant - // with Larapass/webauthn-lib implementation that waits for a userHandle + // with Laragear\WebAuthn implementation that waits for a userHandle if (! Arr::exists($response, 'userHandle') || blank($response['userHandle'])) { $response['userHandle'] = User::getFromCredentialId($request->id)?->userHandle(); $request->merge(['response' => $response]); @@ -98,6 +95,6 @@ protected function authenticated($user) $user->last_seen_at = Carbon::now()->format('Y-m-d H:i:s'); $user->save(); - Log::info('User authenticated via webauthn'); + Log::info(sprintf('User id #%s authenticated using webauthn', $user->id)); } } diff --git a/resources/js/views/auth/Login.vue b/resources/js/views/auth/Login.vue index d5a80137..2083702f 100644 --- a/resources/js/views/auth/Login.vue +++ b/resources/js/views/auth/Login.vue @@ -5,9 +5,10 @@
{{ $t('auth.webauthn.use_security_device_to_sign_in') }}
-
- -
+
+ + +