/** * Function determines the default(=configured) type of * salted hashing method to be used. * * @param string $mode (optional) The TYPO3 mode (FE or BE) saltedpasswords shall be used for * @return string Classname of object to be used */ public static function getDefaultSaltingHashingMethod($mode = TYPO3_MODE) { $extConf = self::returnExtConf($mode); $classNameToUse = \TYPO3\CMS\Saltedpasswords\Salt\Md5Salt::class; if (in_array($extConf['saltedPWHashingMethod'], array_keys(\TYPO3\CMS\Saltedpasswords\Salt\SaltFactory::getRegisteredSaltedHashingMethods()))) { $classNameToUse = $extConf['saltedPWHashingMethod']; } return $classNameToUse; }
/** * Renders a selector element that allows to select the hash method to be used. * * @param array $params Field information to be rendered * @param \TYPO3\CMS\Core\TypoScript\ConfigurationForm $pObj The calling parent object. * @param string $disposal The configuration disposal ('FE' or 'BE') * @return string The HTML selector */ protected function buildHashMethodSelector(array $params, $pObj, $disposal) { $this->init(); $propertyName = $params['propertyName']; $unknownVariablePleaseRenameMe = '\'' . substr(md5($propertyName), 0, 10) . '\''; $pField = ''; $registeredMethods = \TYPO3\CMS\Saltedpasswords\Salt\SaltFactory::getRegisteredSaltedHashingMethods(); foreach ($registeredMethods as $class => $reference) { $classInstance = GeneralUtility::getUserObj($reference); if ($classInstance instanceof \TYPO3\CMS\Saltedpasswords\Salt\SaltInterface && $classInstance->isAvailable()) { $sel = $this->extConf[$disposal]['saltedPWHashingMethod'] == $class ? ' selected="selected" ' : ''; $label = 'ext.saltedpasswords.title.' . strtolower(end(explode('\\', $class))); $pField .= '<option value="' . htmlspecialchars($class) . '"' . $sel . '>' . $GLOBALS['LANG']->getLL($label) . '</option>'; } } $pField = '<select id="' . $propertyName . '" name="' . $params['fieldName'] . '" onChange="uFormUrl(' . $unknownVariablePleaseRenameMe . ')">' . $pField . '</select>'; return $pField; }