/** * Store Login Module ID in Session, required by LdapAuth (Module config) * @return string */ public function generate() { // Login if (\Input::post('FORM_SUBMIT') == 'tl_login') { if (\Input::post('username', true) && \Input::post('password', true)) { $objMember = \MemberModel::findBy('username', \Input::post('username', true)); if ($objMember !== null) { // always reset the password to a random value, otherwise checkCredentialsHook will never be triggered LdapMember::resetPassword($objMember, \Input::post('username', true)); } } // validate email if ($GLOBALS['TL_CONFIG']['ldap_uid'] == 'mail' && !\Validator::isEmail(\Input::post('username', true))) { \Message::addError($GLOBALS['TL_LANG']['ERR']['email']); $this->reload(); } } $strParent = parent::generate(); return $strParent; }
public function run() { $arrJobs = array(); $objTemplate = new \BackendTemplate('be_rename_avatars'); $objTemplate->isActive = $this->isActive(); // Confirmation message if ($_SESSION['RENAME_AVATARS_CONFIRM'] != '') { $objTemplate->message = sprintf('<p class="tl_confirm">%s</p>' . "\n", $_SESSION['RENAME_AVATARS_CONFIRM']); $_SESSION['RENAME_AVATARS_CONFIRM'] = ''; } // Add potential error messages if (!empty($_SESSION['TL_ERROR']) && is_array($_SESSION['TL_ERROR'])) { foreach ($_SESSION['TL_ERROR'] as $message) { $objTemplate->message .= sprintf('<p class="tl_error">%s</p>' . "\n", $message); } $_SESSION['TL_ERROR'] = array(); } // Run the jobs if (\Input::post('FORM_SUBMIT') == 'tl_rename_avatars') { /** * @var \Files $files */ $files = \Files::getInstance(); /** * @var string $uploadDir */ $uploadDir = \FilesModel::findByPk($GLOBALS['TL_CONFIG']['avatar_dir']); if ($uploadDir) { $uploadDir = $uploadDir->path; } else { $_SESSION['TL_ERROR'][] = 'Upload dir is invalid!'; $this->reload(); } /** * @var \MemberModel $member */ $member = \MemberModel::findBy(array('avatar!=?'), ''); $count = 0; while ($member->next()) { $avatarRecord = \FilesModel::findByUuid($member->avatar); if ($avatarRecord) { $avatar = $avatarRecord->path; } else { $_SESSION['TL_ERROR'][] = sprintf('Avatar for user ID %d is invalid', $member->id); continue; } $pathinfo = pathinfo($avatar); $newName = standardize(\String::parseSimpleTokens($GLOBALS['TL_CONFIG']['avatar_name'], $member->row())); if ($pathinfo['filename'] != $newName) { $newPath = $uploadDir . '/' . $newName . '.' . $pathinfo['extension']; $n = 1; while (file_exists(TL_ROOT . '/' . $newPath)) { $newPath = $uploadDir . '/' . $newName . '__' . $n++ . '.' . $pathinfo['extension']; } $files->rename($avatar, $newPath); $avatarRecord->path = $newPath; $avatarRecord->name = $newName; $avatarRecord->save(); $count++; } } $_SESSION['RENAME_AVATARS_CONFIRM'] = sprintf($GLOBALS['TL_LANG']['tl_maintenance']['avatarsRenamed'], $count); $this->reload(); } $objTemplate->action = ampersand(\Environment::get('request')); $objTemplate->headline = $GLOBALS['TL_LANG']['tl_maintenance']['renameAvatars']; $objTemplate->submit = specialchars($GLOBALS['TL_LANG']['tl_maintenance']['doRenameAvatars']); $objTemplate->help = $GLOBALS['TL_LANG']['tl_maintenance']['renameAvatarsHelp']; return $objTemplate->parse(); }
public static function updateMembers($arrSelectedLdapMemberGroups) { // ldap members $objLdapMembers = LdapMemberModel::getLdapMembers(); if (!$objLdapMembers) { return false; } // add/update new members $foundLdapMemberUids = array(); // search filter for mail wildcard and store domain preg_match('#@(?P<domain>[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,5})#is', $GLOBALS['TL_CONFIG']['ldap_filter_person'], $matches); $mailDomain = $matches['domain']; foreach ($objLdapMembers as $k => $v) { if (isset($v[$GLOBALS['TL_CONFIG']['ldap_uid']]) && isset($v[$GLOBALS['TL_CONFIG']['ldap_uid']][0])) { $uid = $v['uid'][0]; $mail = $v['mail'][0]; $uidMail = $v[$GLOBALS['TL_CONFIG']['ldap_uid']][0]; // multiple emails found if ($v['mail']['count'] > 1 && !empty($mailDomain)) { $arrMailFilter = preg_grep("#(.*){$mailDomain}#", $v['mail']); // perform maildomain rgxp against $mailDomain $mail = current($arrMailFilter); // take first mail, that fits domain regxp $uidMail = $mail; } $firstname = $v['givenname'][0]; $lastname = $v['sn'][0]; $foundLdapMemberUids[] = $uid; $objMember = \MemberModel::findBy(array("email = '{$mail}' OR ldapUid = '{$uid}'"), array()); if ($objMember === null) { static::doImportMember($uidMail, $arrSelectedLdapMemberGroups); } else { static::doUpdateMember($objMember, $uid, $mail, $firstname, $lastname, $arrSelectedLdapMemberGroups); } } } // mark remotely non existing local ldap members as disabled $objLocalMembers = \MemberModel::findAll(); if ($objLocalMembers !== null) { while ($objLocalMembers->next()) { if ($objLocalMembers->ldapUid && !in_array($objLocalMembers->ldapUid, $foundLdapMemberUids)) { $objLocalMembers->disable = true; $objLocalMembers->save(); } else { $objLocalMembers->disable = false; $objLocalMembers->save(); } } } }