case AuthenticationResponse::REDIRECT;
case AuthenticationResponse::UI;
$this->logger->debug( "Primary login with $id returned $res->status" );
+ $this->fillRequests( $res->neededRequests, self::ACTION_LOGIN, $guessUserName );
$state['primary'] = $id;
$state['continueRequests'] = $res->neededRequests;
$session->setSecret( 'AuthManager::authnState', $state );
case AuthenticationResponse::REDIRECT;
case AuthenticationResponse::UI;
$this->logger->debug( "Primary login with $id returned $res->status" );
+ $this->fillRequests( $res->neededRequests, self::ACTION_LOGIN, $guessUserName );
$state['continueRequests'] = $res->neededRequests;
$session->setSecret( 'AuthManager::authnState', $state );
return $res;
);
$ret->neededRequests[] = $ret->createRequest;
}
+ $this->fillRequests( $ret->neededRequests, self::ACTION_LOGIN, null );
$session->setSecret( 'AuthManager::authnState', [
'reqs' => [], // Will be filled in later
'primary' => null,
case AuthenticationResponse::REDIRECT;
case AuthenticationResponse::UI;
$this->logger->debug( "Secondary login with $id returned " . $res->status );
+ $this->fillRequests( $res->neededRequests, self::ACTION_LOGIN, $user->getName() );
$state['secondary'][$id] = false;
$state['continueRequests'] = $res->neededRequests;
$session->setSecret( 'AuthManager::authnState', $state );
'user' => $user->getName(),
'creator' => $creator->getName(),
] );
+ $this->fillRequests( $res->neededRequests, self::ACTION_CREATE, null );
$state['primary'] = $id;
$state['continueRequests'] = $res->neededRequests;
$session->setSecret( 'AuthManager::accountCreationState', $state );
'user' => $user->getName(),
'creator' => $creator->getName(),
] );
+ $this->fillRequests( $res->neededRequests, self::ACTION_CREATE, null );
$state['continueRequests'] = $res->neededRequests;
$session->setSecret( 'AuthManager::accountCreationState', $state );
return $res;
'user' => $user->getName(),
'creator' => $creator->getName(),
] );
+ $this->fillRequests( $res->neededRequests, self::ACTION_CREATE, null );
$state['secondary'][$id] = false;
$state['continueRequests'] = $res->neededRequests;
$session->setSecret( 'AuthManager::accountCreationState', $state );
$this->logger->debug( __METHOD__ . ": Account linking $res->status by $id", [
'user' => $user->getName(),
] );
+ $this->fillRequests( $res->neededRequests, self::ACTION_LINK, $user->getName() );
$state['primary'] = $id;
$state['continueRequests'] = $res->neededRequests;
$session->setSecret( 'AuthManager::accountLinkState', $state );
$this->logger->debug( __METHOD__ . ": Account linking $res->status by $id", [
'user' => $user->getName(),
] );
+ $this->fillRequests( $res->neededRequests, self::ACTION_LINK, $user->getName() );
$state['continueRequests'] = $res->neededRequests;
$session->setSecret( 'AuthManager::accountLinkState', $state );
return $res;
}
// Fill in reqs data
- foreach ( $reqs as $req ) {
- $req->action = $providerAction;
- if ( $req->username === null ) {
- $req->username = $options['username'];
- }
- }
+ $this->fillRequests( $reqs, $providerAction, $options['username'] );
// For self::ACTION_CHANGE, filter out any that something else *doesn't* allow changing
if ( $providerAction === self::ACTION_CHANGE || $providerAction === self::ACTION_REMOVE ) {
return array_values( $reqs );
}
+ /**
+ * Set values in an array of requests
+ * @param AuthenticationRequest[] &$reqs
+ * @param string $action
+ * @param string|null $username
+ */
+ private function fillRequests( array &$reqs, $action, $username ) {
+ foreach ( $reqs as $req ) {
+ $req->action = $action;
+ if ( $req->username === null ) {
+ $req->username = $username;
+ }
+ }
+ }
+
/**
* Determine whether a username exists
* @param string $username
} else {
$this->assertNotNull( $session->getSecret( 'AuthManager::authnState' ),
"Response $i, session state" );
+ foreach ( $ret->neededRequests as $neededReq ) {
+ $this->assertEquals( AuthManager::ACTION_LOGIN, $neededReq->action,
+ "Response $i, neededRequest action" );
+ }
$this->assertEquals(
$ret->neededRequests,
$this->manager->getAuthenticationRequests( AuthManager::ACTION_LOGIN_CONTINUE ),
$restartResponse2->createRequest = new CreateFromLoginAuthenticationRequest(
null, [ $req->getUniqueId() => $req ]
);
+ $restartResponse2->createRequest->action = AuthManager::ACTION_LOGIN;
$restartResponse2->neededRequests = [ $rememberReq, $restartResponse2->createRequest ];
return [
$this->request->getSession()->getSecret( 'AuthManager::accountCreationState' ),
"Response $i, session state"
);
+ foreach ( $ret->neededRequests as $neededReq ) {
+ $this->assertEquals( AuthManager::ACTION_CREATE, $neededReq->action,
+ "Response $i, neededRequest action" );
+ }
$this->assertEquals(
$ret->neededRequests,
$this->manager->getAuthenticationRequests( AuthManager::ACTION_CREATE_CONTINUE ),
$this->request->getSession()->getSecret( 'AuthManager::accountLinkState' ),
"Response $i, session state"
);
+ foreach ( $ret->neededRequests as $neededReq ) {
+ $this->assertEquals( AuthManager::ACTION_LINK, $neededReq->action,
+ "Response $i, neededRequest action" );
+ }
$this->assertEquals(
$ret->neededRequests,
$this->manager->getAuthenticationRequests( AuthManager::ACTION_LINK_CONTINUE ),