84 if ($this->info[
'requestedServiceSubType'] ===
'authUserBE') {
86 } elseif ($this->info[
'requestedServiceSubType'] ===
'authUserFE') {
89 if (\
TYPO3\CMS\Saltedpasswords\Utility\SaltedPasswordsUtility::isUsageEnabled(
$mode)) {
93 return $available ? parent::init() : FALSE;
105 public function compareUident(array $user, array $loginData, $passwordCompareStrategy =
'') {
106 $validPasswd = FALSE;
107 $password = $loginData[
'uident_text'];
111 if (is_object($this->objInstanceSaltedPW)) {
112 $validPasswd = $this->objInstanceSaltedPW->checkPassword($password, $user[
'password']);
116 $this->authenticationFailed = TRUE;
121 if ($validPasswd && !(get_class($this->objInstanceSaltedPW) == $defaultHashingClassName) || is_subclass_of($this->objInstanceSaltedPW, $defaultHashingClassName)) {
124 $this->
updatePassword((
int)$user[
'uid'], array(
'password' => $this->objInstanceSaltedPW->getHashedPassword($password)));
126 if ($validPasswd && !$skip && $this->objInstanceSaltedPW->isHashUpdateNeeded($user[
'password'])) {
127 $this->
updatePassword((
int)$user[
'uid'], array(
'password' => $this->objInstanceSaltedPW->getHashedPassword($password)));
129 } elseif (!(
int)$this->extConf[
'forceSalted']) {
131 if (\
TYPO3\CMS\Core\Utility\GeneralUtility::inList(
'C$,M$', substr($user[
'password'], 0, 2))) {
135 if ($user[
'password'][0] ===
'M') {
136 $validPasswd = $this->objInstanceSaltedPW->checkPassword(md5($password), substr($user[
'password'], 1));
138 $validPasswd = $this->objInstanceSaltedPW->checkPassword($password, substr($user[
'password'], 1));
142 $this->authenticationFailed = TRUE;
144 } elseif (preg_match(
'/[0-9abcdef]{32,32}/', $user[
'password'])) {
145 $validPasswd = md5($password) === (string)$user[
'password'];
148 $this->authenticationFailed = TRUE;
151 $validPasswd = (string)$password === (
string)$user[
'password'];
154 if ($validPasswd && (
int)$this->extConf[
'updatePasswd']) {
157 $this->
updatePassword((
int)$user[
'uid'], array(
'password' => $this->objInstanceSaltedPW->getHashedPassword($password)));
176 $validPasswd = FALSE;
179 if ((
string)$this->login[
'uident_text'] !==
'' && (
string)$this->login[
'uname'] !==
'') {
183 $errorMessage =
'Login-attempt from %s (%s), username \'%s\', password not accepted!';
185 if ((
int)$this->extConf[
'onlyAuthService'] || $this->authenticationFailed) {
186 $this->
writeLogMessage(
TYPO3_MODE .
' Authentication failed - wrong password for username \'%s\'', $this->login[
'uname']);
189 $this->
writeLogMessage($errorMessage, $this->authInfo[
'REMOTE_ADDR'], $this->authInfo[
'REMOTE_HOST'], $this->login[
'uname']);
191 $this->
writelog(255, 3, 3, 1, $errorMessage, array(
192 $this->authInfo[
'REMOTE_ADDR'],
193 $this->authInfo[
'REMOTE_HOST'],
194 $this->login[
'uname']
196 \TYPO3\CMS\Core\Utility\GeneralUtility::sysLog(sprintf($errorMessage, $this->authInfo[
'REMOTE_ADDR'], $this->authInfo[
'REMOTE_HOST'], $this->login[
'uname']),
'Core', \
TYPO3\CMS\Core\Utility\GeneralUtility::SYSLOG_SEVERITY_INFO);
197 } elseif ($validPasswd && $user[
'lockToDomain'] && strcasecmp($user[
'lockToDomain'], $this->authInfo[
'HTTP_HOST'])) {
199 $errorMessage =
'Login-attempt from %s (%s), username \'%s\', locked domain \'%s\' did not match \'%s\'!';
200 $this->
writeLogMessage($errorMessage, $this->authInfo[
'REMOTE_ADDR'], $this->authInfo[
'REMOTE_HOST'], $this->login[
'uname'], $user[
'lockToDomain'], $this->authInfo[
'HTTP_HOST']);
201 $this->
writelog(255, 3, 3, 1, $errorMessage, array(
202 $this->authInfo[
'REMOTE_ADDR'],
203 $this->authInfo[
'REMOTE_HOST'],
204 $user[$this->db_user[
'username_column']],
205 $user[
'lockToDomain'],
206 $this->authInfo[
'HTTP_HOST']
208 \TYPO3\CMS\Core\Utility\GeneralUtility::sysLog(sprintf($errorMessage, $this->authInfo[
'REMOTE_ADDR'], $this->authInfo[
'REMOTE_HOST'], $user[$this->db_user[
'username_column']], $user[
'lockToDomain'], $this->authInfo[
'HTTP_HOST']),
'Core', \
TYPO3\CMS\Core\Utility\GeneralUtility::SYSLOG_SEVERITY_INFO);
210 } elseif ($validPasswd) {
226 $GLOBALS[
'TYPO3_DB']->exec_UPDATEquery($this->pObj->user_table, sprintf(
'uid = %u',
$uid), $updateFields);
245 if (func_num_args() > 1) {
246 $params = func_get_args();
247 array_shift($params);
248 $message = vsprintf($message, $params);
251 \TYPO3\CMS\Core\Utility\GeneralUtility::sysLog($message, $this->extKey, \
TYPO3\CMS\Core\Utility\GeneralUtility::SYSLOG_SEVERITY_NOTICE);
253 $GLOBALS[
'TT']->setTSlogMessage($message);
compareUident(array $user, array $loginData, $passwordCompareStrategy='')
writelog($type, $action, $error, $details_nr, $details, $data, $tablename='', $recuid='', $recpid='')
static devLog($msg, $extKey, $severity=0, $dataVar=FALSE)
static getSaltingInstance($saltedHash='', $mode=TYPO3_MODE)
writeLogMessage($message)
updatePassword($uid, $updateFields)
static returnExtConf($mode=TYPO3_MODE)
static getDefaultSaltingHashingMethod($mode=TYPO3_MODE)
if(!defined('TYPO3_MODE')) $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_userauth.php']['logoff_pre_processing'][]