2 namespace TYPO3\CMS\Saltedpasswords\Utility;
65 $this->header =
$lang->getLL(
'ext.saltedpasswords.configuration.header.errorsFound');
66 $this->preText =
$lang->getLL(
'ext.saltedpasswords.configuration.message.errorsFound') .
'<br />';
71 $this->header =
$lang->getLL(
'ext.saltedpasswords.configuration.header.warningsFound');
72 $this->preText =
$lang->getLL(
'ext.saltedpasswords.configuration.message.warningsFound') .
'<br />';
78 $this->header =
$lang->getLL(
'ext.saltedpasswords.configuration.header.additionalInformation');
79 $this->preText =
'<br />';
84 if ($this->errorType < FlashMessage::WARNING && $this->errorType !=
FlashMessage::INFO) {
86 $this->header =
$lang->getLL(
'ext.saltedpasswords.configuration.header.noErrorsFound');
87 $this->preText =
$lang->getLL(
'ext.saltedpasswords.configuration.message.noErrorsFound') .
'<br />';
103 if (!empty($this->problems)) {
104 $message =
'<ul><li>###PROBLEMS###</li></ul>';
105 $message = str_replace(
'###PROBLEMS###', implode(
'<br /> </li><li>', $this->problems), $message);
107 $message .=
'<br />' .
108 $this->
getLanguageService()->getLL(
'ext.saltedpasswords.configuration.message.securityWarning');
111 if (empty($message)) {
114 $message = $this->preText . $message;
117 switch ($this->errorType) {
135 $html =
'<div class="panel panel-' . $class .
'">' .
136 '<div class="panel-heading">' . $this->header .
'</div>' .
137 '<div class="panel-body">' . $message .
'</div>' .
140 'errorType' => $this->errorType,
153 $extConf = unserialize(
$GLOBALS[
'TYPO3_CONF_VARS'][
'EXT'][
'extConf'][
'saltedpasswords']);
154 $this->extConf[
'BE'] = array_merge((array)
$extConf[
'BE.'], (array)$requestSetup[
'BE.']);
155 $this->extConf[
'FE'] = array_merge((array)$extConf[
'FE.'], (array)$requestSetup[
'FE.']);
156 $this->
getLanguageService()->includeLLFile(
'EXT:saltedpasswords/Resources/Private/Language/locallang.xlf');
173 $isBackendCalledOverSsl = (int)
$GLOBALS[
'TYPO3_CONF_VARS'][
'BE'][
'lockSSL'] > 0;
177 if ($isBackendCalledOverSsl) {
179 $problems[] =
$lang->getLL(
'ext.saltedpasswords.configuration.message.backendSsl');
180 }
elseif ($rsaAuthLoaded) {
181 $loginSecurityLevel = trim(
$GLOBALS[
'TYPO3_CONF_VARS'][
'BE'][
'loginSecurityLevel']) ?:
'normal';
182 if ($loginSecurityLevel ===
'rsa') {
183 if ($this->isRsaAuthBackendAvailable()) {
185 $problems[] =
$lang->getLL(
'ext.saltedpasswords.configuration.message.backendRsa');
190 $lang->getLL(
'ext.saltedpasswords.configuration.message.openSslMissing') .
191 '<a href="http://php.net/manual/en/openssl.installation.php" target="_blank">PHP.net</a></strong>.';
196 $problems[] =
$lang->getLL(
'ext.saltedpasswords.configuration.message.backendSecurityLevelNotRsa');
201 $problems[] =
$lang->getLL(
'ext.saltedpasswords.configuration.message.rsaInstructionsIntro') .
'<br />
203 <li>' .
$lang->getLL(
'ext.saltedpasswords.configuration.message.rsaInstructionsFirstItem') .
'</li>
205 <li>' . nl2br(
$lang->getLL(
'ext.saltedpasswords.configuration.message.rsaInstructionsSecondItem')) .
209 ' .
$lang->getLL(
'ext.saltedpasswords.configuration.message.rsaInstructionsFootnote');
217 $problems[] =
$lang->getLL(
'ext.saltedpasswords.configuration.message.warningForceSalted') .
'<br />
218 <strong><i>' .
$lang->getLL(
'ext.saltedpasswords.configuration.label.warning') .
'</i></strong> ' .
219 $lang->getLL(
'ext.saltedpasswords.configuration.message.warningForceSaltedNoteForBackend');
223 $problems[] =
$lang->getLL(
'ext.saltedpasswords.configuration.message.infoOnlyBackendAuthService');
229 $problems[] =
$lang->getLL(
'ext.saltedpasswords.configuration.message.infoForceSalted') .
230 ' <br /> ' .
$lang->getLL(
'ext.saltedpasswords.configuration.message.infoForceSaltedNote');
235 $problems[] =
$lang->getLL(
'ext.saltedpasswords.configuration.message.errorForceSaltedAndUpdatePassword') .
237 $lang->getLL(
'ext.saltedpasswords.configuration.message.errorForceSaltedAndUpdatePasswordReason');
240 $instance = \TYPO3\CMS\Saltedpasswords\Salt\SaltFactory::getSaltingInstance(null,
'BE');
241 if ($instance === null || !$instance->isAvailable()) {
243 $problems[] =
$lang->getLL(
'ext.saltedpasswords.configuration.message.errorHashMethodNotAvailable');
247 if (!empty($params[
'propertyName'])) {
248 return $result[
'html'];
258 protected function isRsaAuthBackendAvailable()
264 $backend = $rsaauthBackendFactory->getBackend();
265 return $backend !== null;
284 $loginSecurityLevel = trim(
$GLOBALS[
'TYPO3_CONF_VARS'][
'FE'][
'loginSecurityLevel']) ?:
'normal';
287 $problems[] =
'<strong>' .
$lang->getLL(
'ext.saltedpasswords.configuration.label.important') .
289 $lang->getLL(
'ext.saltedpasswords.configuration.message.infoLoginSecurityLevelDifferent') .
293 $lang->getLL(
'ext.saltedpasswords.configuration.message.infoLoginSecurityLevelDifferentFirstItem') .
297 $lang->getLL(
'ext.saltedpasswords.configuration.message.infoLoginSecurityLevelDifferentSecondItem') .
301 ' .
$lang->getLL(
'ext.saltedpasswords.configuration.message.infoLoginSecurityLevelDifferentNote');
302 }
elseif ($loginSecurityLevel ===
'rsa') {
304 if ($this->isRsaAuthBackendAvailable()) {
306 $problems[] =
$lang->getLL(
'ext.saltedpasswords.configuration.message.okFeRsaauthLoaded');
310 $problems[] =
'<strong>' .
$lang->getLL(
'ext.saltedpasswords.configuration.message.openSslMissing') .
311 ' <a href="http://php.net/manual/en/openssl.installation.php" target="_blank">PHP.net</a></strong>.';
316 $problems[] =
$lang->getLL(
'ext.saltedpasswords.configuration.message.warningRsaauthNotInstalledButConfigured');
325 $problems[] = nl2br(
$lang->getLL(
'ext.saltedpasswords.configuration.message.infoForceSalted')) .
326 '<strong><i>' .
$lang->getLL(
'ext.saltedpasswords.configuration.label.important') .
327 '</i></strong> ' .
$lang->getLL(
'ext.saltedpasswords.configuration.message.warningForceSaltedNoteForFrontend');
331 $problems[] =
$lang->getLL(
'ext.saltedpasswords.configuration.message.infoOnlyFrontendAuthService');
337 $problems[] = nl2br(
$lang->getLL(
'ext.saltedpasswords.configuration.message.infoForceSalted')) .
338 '<strong><i>' .
$lang->getLL(
'ext.saltedpasswords.configuration.label.important') .
339 '</i></strong> ' .
$lang->getLL(
'ext.saltedpasswords.configuration.message.warningForceSaltedNote2');
344 $problems[] = nl2br(
$lang->getLL(
'ext.saltedpasswords.configuration.message.errorForceSaltedAndUpdatePassword'));
349 $problems[] =
$lang->getLL(
'ext.saltedpasswords.configuration.message.infoSaltedpasswordsFrontendDisabled');
353 if (!empty($params[
'propertyName'])) {
354 return $result[
'html'];
370 $propertyName = $params[
'propertyName'];
371 $unknownVariablePleaseRenameMe =
'\'' . substr(md5($propertyName), 0, 10) .
'\'';
373 $registeredMethods = \TYPO3\CMS\Saltedpasswords\Salt\SaltFactory::getRegisteredSaltedHashingMethods();
374 foreach ($registeredMethods as $class => $reference) {
376 if ($classInstance instanceof \TYPO3\CMS\Saltedpasswords\Salt\SaltInterface && $classInstance->isAvailable()) {
377 $sel = $this->extConf[$disposal][
'saltedPWHashingMethod'] == $class ?
' selected="selected" ' :
'';
378 $label =
'ext.saltedpasswords.title.' . strtolower(end(explode(
'\\', $class)));
379 $pField .=
'<option value="' . htmlspecialchars($class) .
'"' . $sel .
'>' .
$GLOBALS[
'LANG']->getLL($label) .
'</option>';
382 $pField =
'<select id="' . $propertyName .
'" name="' . $params[
'fieldName'] .
383 '" onChange="uFormUrl(' . $unknownVariablePleaseRenameMe .
')">' . $pField .
'</select>';
422 foreach ($postArray as $key => $value) {
424 $parts = explode(
'.', $key, 2);
425 if (count($parts) == 2) {
428 $postArray[$parts[0] .
'.'] = array_merge((array)$postArray[($parts[0] .
'.')], $value);
431 $postArray[$parts[0]] = $value;