Merge "Don't override action in UI and REDIRECT responses"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Mon, 6 Jun 2016 14:25:45 +0000 (14:25 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Mon, 6 Jun 2016 14:25:45 +0000 (14:25 +0000)
includes/auth/AuthManager.php
includes/auth/ResetPasswordSecondaryAuthenticationProvider.php

index 402ea96..2ed0d61 100644 (file)
@@ -558,7 +558,7 @@ class AuthManager implements LoggerAwareInterface {
                                        );
                                        $ret->neededRequests[] = $ret->createRequest;
                                }
-                               $this->fillRequests( $ret->neededRequests, self::ACTION_LOGIN, null );
+                               $this->fillRequests( $ret->neededRequests, self::ACTION_LOGIN, null, true );
                                $session->setSecret( 'AuthManager::authnState', [
                                        'reqs' => [], // Will be filled in later
                                        'primary' => null,
@@ -2056,7 +2056,7 @@ class AuthManager implements LoggerAwareInterface {
                }
 
                // Fill in reqs data
-               $this->fillRequests( $reqs, $providerAction, $options['username'] );
+               $this->fillRequests( $reqs, $providerAction, $options['username'], true );
 
                // For self::ACTION_CHANGE, filter out any that something else *doesn't* allow changing
                if ( $providerAction === self::ACTION_CHANGE || $providerAction === self::ACTION_REMOVE ) {
@@ -2073,10 +2073,13 @@ class AuthManager implements LoggerAwareInterface {
         * @param AuthenticationRequest[] &$reqs
         * @param string $action
         * @param string|null $username
+        * @param boolean $forceAction
         */
-       private function fillRequests( array &$reqs, $action, $username ) {
+       private function fillRequests( array &$reqs, $action, $username, $forceAction = false ) {
                foreach ( $reqs as $req ) {
-                       $req->action = $action;
+                       if ( !$req->action || $forceAction ) {
+                               $req->action = $action;
+                       }
                        if ( $req->username === null ) {
                                $req->username = $username;
                        }
index 2e51cf2..f87a762 100644 (file)
@@ -95,10 +95,8 @@ class ResetPasswordSecondaryAuthenticationProvider extends AbstractSecondaryAuth
                        }
                }
 
-               if ( isset( $data->req ) ) {
-                       $needReq = $data->req;
-               } else {
-                       $needReq = new PasswordAuthenticationRequest();
+               $needReq = isset( $data->req ) ? $data->req : new PasswordAuthenticationRequest();
+               if ( !$needReq->action ) {
                        $needReq->action = AuthManager::ACTION_CHANGE;
                }
                $needReqs = [ $needReq ];