Find an active member by their e-mail-address and username
public static findActiveByEmailAndUsername ( string $strEmail, string $strUsername = null, array $arrOptions = [] ) : |
||
$strEmail | string | The e-mail address |
$strUsername | string | The username |
$arrOptions | array | An optional options array |
return | The model or null if there is no member |
/** * Generate the module */ protected function compile() { /** @var PageModel $objPage */ global $objPage; $GLOBALS['TL_LANGUAGE'] = $objPage->language; \System::loadLanguageFile('tl_member'); $this->loadDataContainer('tl_member'); // Set new password if (strlen(\Input::get('token'))) { $this->setNewPassword(); return; } // Username widget if (!$this->reg_skipName) { $arrFields['username'] = $GLOBALS['TL_DCA']['tl_member']['fields']['username']; $arrFields['username']['name'] = 'username'; } // E-mail widget $arrFields['email'] = $GLOBALS['TL_DCA']['tl_member']['fields']['email']; $arrFields['email']['name'] = 'email'; // Captcha widget if (!$this->disableCaptcha) { $arrFields['captcha'] = array('name' => 'lost_password', 'label' => $GLOBALS['TL_LANG']['MSC']['securityQuestion'], 'inputType' => 'captcha', 'eval' => array('mandatory' => true)); } $row = 0; $strFields = ''; $doNotSubmit = false; $strFormId = 'tl_lost_password_' . $this->id; // Initialize the widgets foreach ($arrFields as $arrField) { /** @var Widget $strClass */ $strClass = $GLOBALS['TL_FFL'][$arrField['inputType']]; // Continue if the class is not defined if (!class_exists($strClass)) { continue; } $arrField['eval']['required'] = $arrField['eval']['mandatory']; /** @var Widget $objWidget */ $objWidget = new $strClass($strClass::getAttributesFromDca($arrField, $arrField['name'])); $objWidget->storeValues = true; $objWidget->rowClass = 'row_' . $row . ($row == 0 ? ' row_first' : '') . ($row % 2 == 0 ? ' even' : ' odd'); ++$row; // Validate the widget if (\Input::post('FORM_SUBMIT') == $strFormId) { $objWidget->validate(); if ($objWidget->hasErrors()) { $doNotSubmit = true; } } $strFields .= $objWidget->parse(); } $this->Template->fields = $strFields; $this->Template->hasError = $doNotSubmit; // Look for an account and send the password link if (\Input::post('FORM_SUBMIT') == $strFormId && !$doNotSubmit) { if ($this->reg_skipName) { $objMember = \MemberModel::findActiveByEmailAndUsername(\Input::post('email', true), null); } else { $objMember = \MemberModel::findActiveByEmailAndUsername(\Input::post('email', true), \Input::post('username')); } if ($objMember === null) { sleep(2); // Wait 2 seconds while brute forcing :) $this->Template->error = $GLOBALS['TL_LANG']['MSC']['accountNotFound']; } else { $this->sendPasswordLink($objMember); } } $this->Template->formId = $strFormId; $this->Template->username = \StringUtil::specialchars($GLOBALS['TL_LANG']['MSC']['username']); $this->Template->email = \StringUtil::specialchars($GLOBALS['TL_LANG']['MSC']['emailAddress']); $this->Template->action = \Environment::get('indexFreeRequest'); $this->Template->slabel = \StringUtil::specialchars($GLOBALS['TL_LANG']['MSC']['requestPassword']); $this->Template->rowLast = 'row_' . $row . ' row_last' . ($row % 2 == 0 ? ' even' : ' odd'); }