private function _setAdminPassword()
{
global $locale, $defender;
if ($this->_getPasswordInput("user_admin_password")) {
// if submit current admin password
$this->_userAdminPassword = $this->_getPasswordInput("user_admin_password");
// var1
$this->_newUserAdminPassword = $this->_getPasswordInput("user_admin_password1");
// var2
$this->_newUserAdminPassword2 = $this->_getPasswordInput("user_admin_password2");
// var3
$passAuth = new PasswordAuth();
//print_p($this->_userAdminPassword); // this is not available if no password exist
//print_p($this->_newUserAdminPassword);
//print_p($this->_newUserAdminPassword2);
if (!$this->userData['user_admin_password'] && !$this->userData['user_admin_salt']) {
// New Admin
$valid_current_password = 1;
$passAuth->inputPassword = 'fake';
$passAuth->inputNewPassword = $this->_userAdminPassword;
$passAuth->inputNewPassword2 = $this->_newUserAdminPassword2;
} else {
// Old Admin
// Intialize password auth
$passAuth->inputPassword = $this->_userAdminPassword;
// var1
$passAuth->inputNewPassword = $this->_newUserAdminPassword;
// var2
$passAuth->inputNewPassword2 = $this->_newUserAdminPassword2;
// var3
$passAuth->currentPasswordHash = $this->userData['user_admin_password'];
$passAuth->currentAlgo = $this->userData['user_admin_algo'];
$passAuth->currentSalt = $this->userData['user_admin_salt'];
$valid_current_password = $passAuth->isValidCurrentPassword();
}
if ($valid_current_password) {
$this->_isValidCurrentAdminPassword = 1;
// authenticated. now do the integrity check
$_isValidNewPassword = $passAuth->isValidNewPassword();
switch ($_isValidNewPassword) {
case '0':
// New password is valid
$new_admin_password = $passAuth->getNewHash();
$new_admin_salt = $passAuth->getNewSalt();
$new_admin_algo = $passAuth->getNewAlgo();
$this->data['user_admin_algo'] = $new_admin_algo;
$this->data['user_admin_salt'] = $new_admin_salt;
$this->data['user_admin_password'] = $new_admin_password;
break;
case '1':
// new password is old password
$defender->stop();
$defender->setInputError('user_admin_password');
$defender->setInputError('user_admin_password1');
$defender->setErrorText('user_admin_password', $locale['u144'] . $locale['u146'] . $locale['u133']);
$defender->setErrorText('user_admin_password1', $locale['u144'] . $locale['u146'] . $locale['u133']);
break;
case '2':
// The two new passwords are not identical
$defender->stop();
$defender->setInputError('user_admin_password1');
$defender->setInputError('user_admin_password2');
$defender->setErrorText('user_admin_password1', $locale['u144'] . $locale['u148a']);
$defender->setErrorText('user_admin_password2', $locale['u144'] . $locale['u148a']);
break;
case '3':
// New password contains invalid chars / symbols
$defender->stop();
$defender->setInputError('user_admin_password1');
$defender->setErrorText('user_admin_password1', $locale['u144'] . $locale['u142'] . "<br />" . $locale['u147']);
break;
}
} else {
$defender->stop();
$defender->setInputError('user_admin_password');
$defender->setErrorText('user_admin_password', $locale['u149a']);
}
} else {
// check db only - admin cannot save profile page without password
if (iADMIN) {
$require_valid_password = $this->userData['user_admin_password'] ? TRUE : FALSE;
if (!$require_valid_password) {
// 149 for admin
$defender->stop();
$defender->setInputError('user_admin_password');
$defender->setErrorText('user_admin_password', $locale['u149a']);
}
}
}
}