Explorar el Código

Pass username prefill through unauthenticated request redirects

Signed-off-by: Julius Härtl <jus@bitgrid.net>
tags/v24.0.0beta1
Julius Härtl hace 2 años
padre
commit
61dd1d3d97
No account linked to committer's email address

+ 2
- 1
core/Controller/ClientFlowLoginController.php Ver fichero

@@ -167,7 +167,7 @@ class ClientFlowLoginController extends Controller {
*
* @return StandaloneTemplateResponse
*/
public function showAuthPickerPage($clientIdentifier = '') {
public function showAuthPickerPage($clientIdentifier = '', $user = '') {
$clientName = $this->getClientName();
$client = null;
if ($clientIdentifier !== '') {
@@ -218,6 +218,7 @@ class ClientFlowLoginController extends Controller {
'stateToken' => $stateToken,
'serverHost' => $this->getServerPath(),
'oauthState' => $this->session->get('oauth.state'),
'user' => $user,
],
'guest'
);

+ 2
- 1
core/Controller/ClientFlowLoginV2Controller.php Ver fichero

@@ -117,7 +117,7 @@ class ClientFlowLoginV2Controller extends Controller {
* @PublicPage
* @UseSession
*/
public function showAuthPickerPage(): StandaloneTemplateResponse {
public function showAuthPickerPage($user = ''): StandaloneTemplateResponse {
try {
$flow = $this->getFlowByLoginToken();
} catch (LoginFlowV2NotFoundException $e) {
@@ -138,6 +138,7 @@ class ClientFlowLoginV2Controller extends Controller {
'instanceName' => $this->defaults->getName(),
'urlGenerator' => $this->urlGenerator,
'stateToken' => $stateToken,
'user' => $user,
],
'guest'
);

+ 1
- 1
core/templates/loginflow/authpicker.php Ver fichero

@@ -46,7 +46,7 @@ $urlGenerator = $_['urlGenerator'];
<br/>

<p id="redirect-link">
<a href="<?php p($urlGenerator->linkToRoute('core.ClientFlowLogin.grantPage', ['stateToken' => $_['stateToken'], 'clientIdentifier' => $_['clientIdentifier'], 'oauthState' => $_['oauthState']])) ?>">
<a href="<?php p($urlGenerator->linkToRoute('core.ClientFlowLogin.grantPage', ['stateToken' => $_['stateToken'], 'clientIdentifier' => $_['clientIdentifier'], 'oauthState' => $_['oauthState'], 'user' => $_['user']])) ?>">
<input type="submit" class="login primary icon-confirm-white" value="<?php p($l->t('Log in')) ?>">
</a>
</p>

+ 1
- 1
core/templates/loginflowv2/authpicker.php Ver fichero

@@ -45,7 +45,7 @@ $urlGenerator = $_['urlGenerator'];
<br/>

<p id="redirect-link">
<a href="<?php p($urlGenerator->linkToRouteAbsolute('core.ClientFlowLoginV2.grantPage', ['stateToken' => $_['stateToken']])) ?>">
<a href="<?php p($urlGenerator->linkToRouteAbsolute('core.ClientFlowLoginV2.grantPage', ['stateToken' => $_['stateToken'], 'user' => $_['user']])) ?>">
<input type="submit" class="login primary icon-confirm-white" value="<?php p($l->t('Log in')) ?>">
</a>
</p>

+ 4
- 0
lib/private/AppFramework/Middleware/Security/SecurityMiddleware.php Ver fichero

@@ -260,6 +260,10 @@ class SecurityMiddleware extends Middleware {
if (isset($this->request->server['REQUEST_URI'])) {
$params['redirect_url'] = $this->request->server['REQUEST_URI'];
}
$usernamePrefill = $this->request->getParam('user', '');
if ($usernamePrefill !== '') {
$params['user'] = $usernamePrefill;
}
$url = $this->urlGenerator->linkToRoute('core.login.showLoginForm', $params);
$response = new RedirectResponse($url);
} else {

+ 2
- 0
tests/Core/Controller/ClientFlowLoginControllerTest.php Ver fichero

@@ -183,6 +183,7 @@ class ClientFlowLoginControllerTest extends TestCase {
'stateToken' => 'StateToken',
'serverHost' => 'https://example.com',
'oauthState' => 'OauthStateToken',
'user' => '',
],
'guest'
);
@@ -246,6 +247,7 @@ class ClientFlowLoginControllerTest extends TestCase {
'stateToken' => 'StateToken',
'serverHost' => 'https://example.com',
'oauthState' => 'OauthStateToken',
'user' => '',
],
'guest'
);

Cargando…
Cancelar
Guardar