Fix default redirect on successful WebAuthn login

Signed-off-by: Richard Steinmetz <richard@steinmetz.cloud>
This commit is contained in:
Richard Steinmetz 2022-12-05 12:51:53 +01:00
Родитель e36e92bace
Коммит fc4dd3041c
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 27137D9E7D273FB2
4 изменённых файлов: 15 добавлений и 8 удалений

Просмотреть файл

@ -7,6 +7,7 @@ declare(strict_types=1);
*
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Roeland Jago Douma <roeland@famdouma.nl>
* @author Richard Steinmetz <richard@steinmetz.cloud>
*
* @license GNU AGPL version 3 or any later version
*
@ -29,6 +30,7 @@ namespace OC\Core\Controller;
use OC\Authentication\Login\LoginData;
use OC\Authentication\Login\WebAuthnChain;
use OC\Authentication\WebAuthn\Manager;
use OC\URLGenerator;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\JSONResponse;
@ -46,14 +48,16 @@ class WebAuthnController extends Controller {
private ISession $session;
private LoggerInterface $logger;
private WebAuthnChain $webAuthnChain;
private UrlGenerator $urlGenerator;
public function __construct($appName, IRequest $request, Manager $webAuthnManger, ISession $session, LoggerInterface $logger, WebAuthnChain $webAuthnChain) {
public function __construct($appName, IRequest $request, Manager $webAuthnManger, ISession $session, LoggerInterface $logger, WebAuthnChain $webAuthnChain, URLGenerator $urlGenerator) {
parent::__construct($appName, $request);
$this->webAuthnManger = $webAuthnManger;
$this->session = $session;
$this->logger = $logger;
$this->webAuthnChain = $webAuthnChain;
$this->urlGenerator = $urlGenerator;
}
/**
@ -106,6 +110,8 @@ class WebAuthnController extends Controller {
);
$this->webAuthnChain->process($loginData);
return new JSONResponse([]);
return new JSONResponse([
'defaultRedirectUrl' => $this->urlGenerator->linkToDefaultPageUrl(),
]);
}
}

Просмотреть файл

@ -200,12 +200,13 @@ export default {
completeAuthentication(challenge) {
console.debug('TIME TO COMPLETE')
const location = this.redirectUrl
const redirectUrl = this.redirectUrl
return finishAuthentication(JSON.stringify(challenge))
.then(data => {
.then(({ defaultRedirectUrl }) => {
console.debug('Logged in redirecting')
window.location.href = location
// Redirect url might be false so || should be used instead of ??.
window.location.href = redirectUrl || defaultRedirectUrl
})
.catch(error => {
console.debug('GOT AN ERROR WHILE SUBMITTING CHALLENGE!')

4
dist/core-login.js поставляемый

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

2
dist/core-login.js.map поставляемый

Различия файлов скрыты, потому что одна или несколько строк слишком длинны