+49 151 42 43 20 92 info@nevafay.de

Dies ist eine funktionierende Methode, um auch mit FeLoginMode „rsa“ ein Einloggen über das Frontend unter Typo3 7.6 zu ermöglichen

public function initFeUser ( $username, $password, $pid )
	{
		$loginData = array(
			'username' => $username,
			'uident'   => $password,
			'status'   => 'login',
		);
		$GLOBALS['TSFE']->fe_user->checkPid = 0; //do not use a particular pid
		$info = $GLOBALS['TSFE']->fe_user->getAuthInfoArray();
		$user = $GLOBALS['TSFE']->fe_user->fetchUserRecord($info['db_user'], $loginData['username']);
		#print_r($user);
		if ( isset($user) && $user != '' ) {
			$userId       = $user['uid'];
			$userPassword = $user['password'];
			$success      = false;
			if ( $pid == $user['pid'] && \TYPO3\CMS\Saltedpasswords\Utility\SaltedPasswordsUtility::isUsageEnabled('FE'))
			{
				$objSalt = \TYPO3\CMS\Saltedpasswords\Salt\SaltFactory::getSaltingInstance($userPassword);
				if (is_object($objSalt))
				{
					$success = $objSalt->checkPassword($password,$userPassword);
				}
			}
			if ( $success ) {
				$GLOBALS['TSFE']->fe_user->createUserSession($user);
				$GLOBALS['TSFE']->fe_user->user = $GLOBALS['TSFE']->fe_user->fetchUserSession();
				# https://forge.typo3.org/issues/62194
				# Create Session
				$reflection = new \ReflectionClass($GLOBALS['TSFE']->fe_user);
				$setSessionCookieMethod = $reflection->getMethod('setSessionCookie');
				$setSessionCookieMethod->setAccessible(TRUE);
				$setSessionCookieMethod->invoke($GLOBALS['TSFE']->fe_user);
				return true;
			}
		}
		return false;
	}