/** * Creates a user, sets preferences, lookups data, changes password, * accept user agreement, delete user */ public function testCreateSetLookupDelete() { include_once "./Services/User/classes/class.ilObjUser.php"; // delete all aatestuser from previous runs while (($i = ilObjUser::_lookupId("aatestuser")) > 0) { $user = new ilObjUser($i); $user->delete(); } $user = new ilObjUser(); // creation $d = array("login" => "aatestuser", "passwd_type" => IL_PASSWD_PLAIN, "passwd" => "password", "gender" => "m", "firstname" => "Max", "lastname" => "Mutzke", "email" => "*****@*****.**", "client_ip" => "1.2.3.4", "ext_account" => "ext_mutzke"); $user->assignData($d); $user->create(); $user->saveAsNew(); $user->setLanguage("no"); $user->writePrefs(); $id = $user->getId(); $value .= $user->getFirstname() . "-"; // update $user->setFirstname("Maxi"); $user->update(); $value .= $user->getFirstname() . "-"; // other update methods $user->refreshLogin(); // lookups $value .= ilObjUser::_lookupEmail($id) . "-"; $value .= ilObjUser::_lookupGender($id) . "-"; $value .= ilObjUser::_lookupClientIP($id) . "-"; $n = ilObjUser::_lookupName($id); $value .= $n["lastname"] . "-"; ilObjUser::_lookupFields($id); $value .= ilObjUser::_lookupLogin($id) . "-"; $value .= ilObjUser::_lookupExternalAccount($id) . "-"; $value .= ilObjUser::_lookupId("aatestuser") . "-"; ilObjUser::_lookupLastLogin($id); $value .= ilObjUser::_lookupLanguage($id) . "-"; ilObjUser::_readUsersProfileData(array($id)); if (ilObjUser::_loginExists("aatestuser")) { $value .= "le-"; } // password methods if (ilObjUser::_checkPassword($id, "password")) { $value .= "pw1-"; } $user->replacePassword(md5("password2")); if (ilObjUser::_checkPassword($id, "password2")) { $value .= "pw2-"; } $user->updatePassword("password2", "password3", "password3"); if (ilObjUser::_checkPassword($id, "password3")) { $value .= "pw3-"; } $user->resetPassword("password4", "password4"); if (ilObjUser::_checkPassword($id, "password4")) { $value .= "pw4-"; } // preferences... $user->writePref("testpref", "pref1"); $value .= ilObjUser::_lookupPref($id, "testpref") . "-"; $user->deletePref("testpref"); if (ilObjUser::_lookupPref($id, "testpref") == "") { $value .= "pref2" . "-"; } // user agreement acceptance if (!ilObjUser::_hasAcceptedAgreement("aatestuser")) { $value .= "agr1-"; } $user->writeAccepted(); if (ilObjUser::_hasAcceptedAgreement("aatestuser")) { $value .= "agr2-"; } // activation $user->setActive(false); if (!ilObjUser::getStoredActive($id)) { } $value .= "act1-"; $user->setActive(true); if (ilObjUser::getStoredActive($id)) { } $value .= "act2-"; ilObjUser::_toggleActiveStatusOfUsers(array($id), false); if (!ilObjUser::getStoredActive($id)) { } $value .= "act3-"; // deletion $user->delete(); $this->assertEquals("Max-Maxi-de@de.de-m-1.2.3.4-Mutzke-aatestuser-ext_mutzke-{$id}-no-le-" . "pw1-pw2-pw3-pw4-pref1-pref2-agr1-agr2-act1-act2-act3-", $value); }
/** * @param ilObjUser $user * @param string $raw * @return bool */ public function verifyPassword(ilObjUser $user, $raw) { $encoder = $this->getEncoderFactory()->getEncoderByName($user->getPasswordEncodingType(), true); if ($this->getEncoderName() != $encoder->getName()) { if ($encoder->isPasswordValid($user->getPasswd(), $raw, $user->getPasswordSalt())) { $user->resetPassword($raw, $raw); return true; } return false; } else { return $encoder->isPasswordValid($user->getPasswd(), $raw, $user->getPasswordSalt()); } }
/** Reads the submitted data from the password assistance form. * * The following form fields are read as HTTP POST parameters: * key * username * password1 * password2 * * The key is used to retrieve the password assistance session. * If the key is missing, or if the password assistance session has expired, the * password assistance form will be shown instead of this form. * * If the password assistance session is valid, and if the username matches the * username, for which the password assistance has been requested, and if the * new password is valid, ILIAS assigns the password to the user. * * Note: To prevent replay attacks, the session is deleted when the * password has been assigned successfully. */ function submitAssignPasswordForm() { global $tpl, $ilias, $lng, $rbacadmin, $rbacreview; require_once "include/inc.pwassist_session_handler.php"; // Retrieve form data $pwassist_id = ilUtil::stripSlashes($_POST["key"]); $username = ilUtil::stripSlashes($_POST["username"]); $password1 = ilUtil::stripSlashes($_POST["password1"]); $password2 = ilUtil::stripSlashes($_POST["password2"]); // Retrieve the session $pwassist_session = db_pwassist_session_read($pwassist_id); if (count($pwassist_session) == 0 || $pwassist_session["expires"] < time()) { $this->showAssistanceForm($lng->txt("pwassist_session_expired")); } else { $is_successful = true; $message = ""; $userObj = new ilObjUser($pwassist_session["user_id"]); // Validate the entries of the user // ---------------------------------- // check if the user still exists if ($userObj == null) { $message = $lng->txt("user_does_not_exist"); $is_successful = false; } // check if the username entered by the user matches the // one of the user object. if ($is_successful && strcasecmp($userObj->getLogin(), $username) != 0) { $message = $lng->txt("pwassist_login_not_match"); $is_successful = false; } // check if the user entered the password correctly into the // two entry fields. if ($is_successful && $password1 != $password2) { $message = $lng->txt("passwd_not_match"); $is_successful = false; } // validate the password if ($is_successful && !ilUtil::isPassword($password1)) { $message = $lng->txt("passwd_invalid"); $is_successful = false; } // End of validation // If the validation was successful, we change the password of the // user. // ------------------ if ($is_successful) { $is_successful = $userObj->resetPassword($password1, $password2); if (!$is_successful) { $message = $lng->txt("passwd_invalid"); } } // If we are successful so far, we update the user object. // ------------------ if ($is_successful) { $is_successfull = $userObj->update(); if (!$is_successful) { $message = $lng->txt("update_error"); } } // If we are successful, we destroy the password assistance // session and redirect to the login page. // Else we display the form again along with an error message. // ------------------ if ($is_successful) { db_pwassist_session_destroy($pwassist_id); $this->showMessageForm(null, sprintf($lng->txt("pwassist_password_assigned"), $username)); } else { $this->showAssignPasswordForm($message, $username, $password1, $password2, $pwassist_id); } } }