Updated the login redirect logic to ignore mfa routes

This commit is contained in:
Dan Brown 2021-08-31 20:54:43 +01:00
parent bee5e2c7ca
commit 9eb65dcd78
No known key found for this signature in database
GPG Key ID: 46D9F943C24A2EF9
2 changed files with 29 additions and 8 deletions

View File

@ -81,13 +81,7 @@ class LoginController extends Controller
}
// Store the previous location for redirect after login
$previous = url()->previous('');
if ($previous && $previous !== url('/login') && setting('app-public')) {
$isPreviousFromInstance = (strpos($previous, url('/')) === 0);
if ($isPreviousFromInstance) {
redirect()->setIntendedUrl($previous);
}
}
$this->updateIntendedFromPrevious();
return view('auth.login', [
'socialDrivers' => $socialDrivers,
@ -228,4 +222,32 @@ class LoginController extends Controller
$this->username() => [trans('auth.failed')],
])->redirectTo('/login');
}
/**
* Update the intended URL location from their previous URL.
* Ignores if not from the current app instance or if from certain
* login or authentication routes.
*/
protected function updateIntendedFromPrevious(): void
{
// Store the previous location for redirect after login
$previous = url()->previous('');
$isPreviousFromInstance = (strpos($previous, url('/')) === 0);
if (!$previous || !setting('app-public') || !$isPreviousFromInstance) {
return;
}
$ignorePrefixList = [
'/login',
'/mfa',
];
foreach ($ignorePrefixList as $ignorePrefix) {
if (strpos($previous, url($ignorePrefix)) === 0) {
return;
}
}
redirect()->setIntendedUrl($previous);
}
}

View File

@ -53,7 +53,6 @@ class MfaBackupCodesController extends Controller
if (!auth()->check()) {
$this->showSuccessNotification(trans('auth.mfa_setup_login_notification'));
return redirect('/login');
}