Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at> [skip ci]backport/44745/stable27
$data = [ | $data = [ | ||||
'providers' => $setupProviders, | 'providers' => $setupProviders, | ||||
'logout_url' => $this->getLogoutUrl(), | 'logout_url' => $this->getLogoutUrl(), | ||||
'redirect_url' => $redirect_url, | |||||
]; | ]; | ||||
return new StandaloneTemplateResponse($this->appName, 'twofactorsetupselection', $data, 'guest'); | return new StandaloneTemplateResponse($this->appName, 'twofactorsetupselection', $data, 'guest'); | ||||
$data = [ | $data = [ | ||||
'provider' => $provider, | 'provider' => $provider, | ||||
'logout_url' => $this->getLogoutUrl(), | 'logout_url' => $this->getLogoutUrl(), | ||||
'redirect_url' => $redirect_url, | |||||
'template' => $tmpl->fetchPage(), | 'template' => $tmpl->fetchPage(), | ||||
]; | ]; | ||||
$response = new StandaloneTemplateResponse($this->appName, 'twofactorsetupchallenge', $data, 'guest'); | $response = new StandaloneTemplateResponse($this->appName, 'twofactorsetupchallenge', $data, 'guest'); | ||||
'core.TwoFactorChallenge.showChallenge', | 'core.TwoFactorChallenge.showChallenge', | ||||
[ | [ | ||||
'challengeProviderId' => $providerId, | 'challengeProviderId' => $providerId, | ||||
'redirect_url' => $redirect_url, | |||||
] | ] | ||||
)); | )); | ||||
} | } |
public function afterException($controller, $methodName, Exception $exception) { | public function afterException($controller, $methodName, Exception $exception) { | ||||
if ($exception instanceof TwoFactorAuthRequiredException) { | if ($exception instanceof TwoFactorAuthRequiredException) { | ||||
$params = []; | |||||
if (isset($this->request->server['REQUEST_URI'])) { | |||||
$params = [ | |||||
'redirect_url' => $this->request->getParam('redirect_url'), | |||||
]; | |||||
if (!isset($params['redirect_url']) && isset($this->request->server['REQUEST_URI'])) { | |||||
$params['redirect_url'] = $this->request->server['REQUEST_URI']; | $params['redirect_url'] = $this->request->server['REQUEST_URI']; | ||||
} | } | ||||
return new RedirectResponse($this->urlGenerator->linkToRoute('core.TwoFactorChallenge.selectChallenge', $params)); | return new RedirectResponse($this->urlGenerator->linkToRoute('core.TwoFactorChallenge.selectChallenge', $params)); |
href="<?php p(\OC::$server->getURLGenerator()->linkToRoute('core.TwoFactorChallenge.setupProvider', | href="<?php p(\OC::$server->getURLGenerator()->linkToRoute('core.TwoFactorChallenge.setupProvider', | ||||
[ | [ | ||||
'providerId' => $provider->getId(), | 'providerId' => $provider->getId(), | ||||
'redirect_url' => $_['redirect_url'], | |||||
] | ] | ||||
)) ?>"> | )) ?>"> | ||||
<?php | <?php |
$this->assertEquals($expected, $this->controller->solveChallenge('myprovider', 'token', '/url')); | $this->assertEquals($expected, $this->controller->solveChallenge('myprovider', 'token', '/url')); | ||||
} | } | ||||
public function testSetUpProviders() { | |||||
public function testSetUpProviders(): void { | |||||
$user = $this->createMock(IUser::class); | $user = $this->createMock(IUser::class); | ||||
$this->userSession->expects($this->once()) | $this->userSession->expects($this->once()) | ||||
->method('getUser') | ->method('getUser') | ||||
$provider, | $provider, | ||||
], | ], | ||||
'logout_url' => 'logoutAttribute', | 'logout_url' => 'logoutAttribute', | ||||
'redirect_url' => null, | |||||
], | ], | ||||
'guest' | 'guest' | ||||
); | ); | ||||
$this->assertEquals($expected, $response); | $this->assertEquals($expected, $response); | ||||
} | } | ||||
public function testSetUpProvider() { | |||||
public function testSetUpProvider(): void { | |||||
$user = $this->createMock(IUser::class); | $user = $this->createMock(IUser::class); | ||||
$this->userSession->expects($this->once()) | $this->userSession->expects($this->once()) | ||||
->method('getUser') | ->method('getUser') | ||||
'provider' => $provider, | 'provider' => $provider, | ||||
'logout_url' => 'logoutAttribute', | 'logout_url' => 'logoutAttribute', | ||||
'template' => 'tmpl', | 'template' => 'tmpl', | ||||
'redirect_url' => null, | |||||
], | ], | ||||
'guest' | 'guest' | ||||
); | ); | ||||
$this->assertEquals($expected, $response); | $this->assertEquals($expected, $response); | ||||
} | } | ||||
public function testConfirmProviderSetup() { | |||||
public function testConfirmProviderSetup(): void { | |||||
$this->urlGenerator->expects($this->once()) | $this->urlGenerator->expects($this->once()) | ||||
->method('linkToRoute') | ->method('linkToRoute') | ||||
->with( | ->with( | ||||
'core.TwoFactorChallenge.showChallenge', | 'core.TwoFactorChallenge.showChallenge', | ||||
[ | [ | ||||
'challengeProviderId' => 'totp', | 'challengeProviderId' => 'totp', | ||||
'redirect_url' => null, | |||||
]) | ]) | ||||
->willReturn('2fa/select/page'); | ->willReturn('2fa/select/page'); | ||||
$expected = new RedirectResponse('2fa/select/page'); | $expected = new RedirectResponse('2fa/select/page'); |