Code Duplication    Length = 29-38 lines in 2 locations

includes/auth/AuthManager.php 2 locations

@@ 1838-1875 (lines=38) @@
1835
			}
1836
1837
			$res = $provider->beginPrimaryAccountLink( $user, $reqs );
1838
			switch ( $res->status ) {
1839
				case AuthenticationResponse::PASS;
1840
					$this->logger->info( "Account linked to {user} by $id", [
1841
						'user' => $user->getName(),
1842
					] );
1843
					$this->callMethodOnProviders( 3, 'postAccountLink', [ $user, $res ] );
1844
					return $res;
1845
1846
				case AuthenticationResponse::FAIL;
1847
					$this->logger->debug( __METHOD__ . ": Account linking failed by $id", [
1848
						'user' => $user->getName(),
1849
					] );
1850
					$this->callMethodOnProviders( 3, 'postAccountLink', [ $user, $res ] );
1851
					return $res;
1852
1853
				case AuthenticationResponse::ABSTAIN;
1854
					// Continue loop
1855
					break;
1856
1857
				case AuthenticationResponse::REDIRECT;
1858
				case AuthenticationResponse::UI;
1859
					$this->logger->debug( __METHOD__ . ": Account linking $res->status by $id", [
1860
						'user' => $user->getName(),
1861
					] );
1862
					$this->fillRequests( $res->neededRequests, self::ACTION_LINK, $user->getName() );
1863
					$state['primary'] = $id;
1864
					$state['continueRequests'] = $res->neededRequests;
1865
					$session->setSecret( 'AuthManager::accountLinkState', $state );
1866
					$session->persist();
1867
					return $res;
1868
1869
					// @codeCoverageIgnoreStart
1870
				default:
1871
					throw new \DomainException(
1872
						get_class( $provider ) . "::beginPrimaryAccountLink() returned $res->status"
1873
					);
1874
					// @codeCoverageIgnoreEnd
1875
			}
1876
		}
1877
1878
		$this->logger->debug( __METHOD__ . ': Account linking failed because no provider accepted', [
@@ 1945-1973 (lines=29) @@
1942
			}
1943
			$id = $provider->getUniqueId();
1944
			$res = $provider->continuePrimaryAccountLink( $user, $reqs );
1945
			switch ( $res->status ) {
1946
				case AuthenticationResponse::PASS;
1947
					$this->logger->info( "Account linked to {user} by $id", [
1948
						'user' => $user->getName(),
1949
					] );
1950
					$this->callMethodOnProviders( 3, 'postAccountLink', [ $user, $res ] );
1951
					$session->remove( 'AuthManager::accountLinkState' );
1952
					return $res;
1953
				case AuthenticationResponse::FAIL;
1954
					$this->logger->debug( __METHOD__ . ": Account linking failed by $id", [
1955
						'user' => $user->getName(),
1956
					] );
1957
					$this->callMethodOnProviders( 3, 'postAccountLink', [ $user, $res ] );
1958
					$session->remove( 'AuthManager::accountLinkState' );
1959
					return $res;
1960
				case AuthenticationResponse::REDIRECT;
1961
				case AuthenticationResponse::UI;
1962
					$this->logger->debug( __METHOD__ . ": Account linking $res->status by $id", [
1963
						'user' => $user->getName(),
1964
					] );
1965
					$this->fillRequests( $res->neededRequests, self::ACTION_LINK, $user->getName() );
1966
					$state['continueRequests'] = $res->neededRequests;
1967
					$session->setSecret( 'AuthManager::accountLinkState', $state );
1968
					return $res;
1969
				default:
1970
					throw new \DomainException(
1971
						get_class( $provider ) . "::continuePrimaryAccountLink() returned $res->status"
1972
					);
1973
			}
1974
		} catch ( \Exception $ex ) {
1975
			$session->remove( 'AuthManager::accountLinkState' );
1976
			throw $ex;