public static function get_instance() { if (self::$instance == NULL) { self::$instance = new Security_PasswordGenerator(); } return self::$instance; }
public static function reset_user_password(Admin_UserEntry $user_entry) { $real_name = $user_entry->get_real_name(); /* * Check that the user has an email address to send the * new password to. */ if (strlen($user_entry->get_email()) == 0) { throw new Exception('Unable to reset the password of ' . $user_entry->get_real_name() . ' as no email address has been set!'); } /* * Generate the new password. */ $pwg = Security_PasswordGenerator::get_instance(); $pw = $pwg->get_password(); /* * Check that there is an admin for this site. */ $from_email = ''; /* * Compose an email. * * How can this be edited and overridden? */ $email_title = 'New password for ' . $user_entry->get_real_name(); $to_email = $user_entry->get_email(); $email_body = <<<EML Dear {$real_name}, Your password has been reset to '{$pw}'. EML; if (mail($to_email, $from_email, $email_body, "From: {$from_email};\r\nReply-To: {$from_email}")) { $alm = Admin_LoginManager::get_instance(); $alm->set_password($user_entry->get_name(), $pw); } else { throw new Exception("Unable to send a password reset email to {$to_email}!"); } }
/** * Resets the password of the user with the given name. * * First checks that their is an account with that name, * throws a HaddockProjectOrganisation_PasswordResetException * if there isn't. * * Then it generates a new password. * * The password is emailed to the user. * * The password is then set to the encrypted form of the password. */ public function reset_password($name) { //throw // new HaddockProjectOrganisation_PasswordResetException($name); /* * Check is user. */ if (!$this->is_user($name)) { throw new HaddockProjectOrganisation_PasswordResetException($name); } /* * Generate a new password. */ $password_generator = Security_PasswordGenerator::get_instance(); $new_password = $password_generator->get_password($this->get_new_password_length()); /* * Email the password to the user. */ $this->email_user_new_password($name, $new_password); /* * Update the values in the database. */ $this->set_password($name, $new_password); }
$p_f_not_yet_p = new HTMLTags_P('This project doesn\'t have a password file yet ...'); $content_div->append_tag_to_content($p_f_not_yet_p); /* * The default host. */ $host = 'localhost'; /* * The username and database are suggested by the project directory. */ $username = $project_directory->get_database_username_suggestion(); $database = $project_directory->get_database_name_suggestion(); /* * Generate a random password. */ $password_length = 12; $password_generator = Security_PasswordGenerator::get_instance(); $password = $password_generator->get_password($password_length); } /* * ----------------------------------------------------------------------------- */ $password_management_form = new HTMLTags_SimpleOLForm('password_management'); $p_m_f_action_url = new HTMLTags_URL(); $p_m_f_action_url->set_file('/admin/redirect-script.php'); $p_m_f_action_url->set_get_variable('module', 'database'); $p_m_f_action_url->set_get_variable('page', 'passwords-file-management'); $password_management_form->set_action($p_m_f_action_url); $password_management_form->set_legend_text('Password Management'); $password_management_form->add_input_name_with_value('host', $host); $password_management_form->add_input_name_with_value('username', $username); $password_management_form->add_input_name_with_value('database', $database);