updated genpass

This commit is contained in:
Bachir Soussi Chiadmi 2019-01-27 14:42:15 +01:00
parent 2d23821da4
commit 5510ac0abf
3 changed files with 55 additions and 56 deletions

View File

@ -1,3 +0,0 @@
.genpass-password {
white-space: nowrap;
}

View File

@ -3,9 +3,8 @@ description = Generate a password when adding a new user.
core = 7.x core = 7.x
configure = admin/config/people/accounts configure = admin/config/people/accounts
; Information added by drupal.org packaging script on 2012-02-20 ; Information added by Drupal.org packaging script on 2018-06-26
version = "7.x-1.0" version = "7.x-1.1"
core = "7.x" core = "7.x"
project = "genpass" project = "genpass"
datestamp = "1329772844" datestamp = "1530031732"

View File

@ -9,13 +9,6 @@ define('GENPASS_DISPLAY_ADMIN', 1);
define('GENPASS_DISPLAY_USER', 2); define('GENPASS_DISPLAY_USER', 2);
define('GENPASS_DISPLAY_BOTH', 3); define('GENPASS_DISPLAY_BOTH', 3);
/**
* Implements of hook_init().
*/
function genpass_init() {
drupal_add_css(drupal_get_path('module', 'genpass') . '/genpass.css');
}
/** /**
* Defines default characters allowed for passwords. * Defines default characters allowed for passwords.
*/ */
@ -33,17 +26,16 @@ function genpass_generate() {
} }
/** /**
* Generate a new password using genpass's internal password generation * Generates random password.
* algorithm.
* Based on the original D6 user_password function (with more characters)
* *
* @return a fresh password according to the settings made in /admin/user/settings * @see user_password()
* *
* @see genpass_form_alter() * @return string
* The random string.
*/ */
function genpass_password() { function genpass_password() {
$pass = ''; $pass = '';
$length = variable_get('genpass_length', 8); $length = variable_get('genpass_length', 12);
$allowable_characters = variable_get('genpass_entropy', _GENPASS_REQUIRED_entropy()); $allowable_characters = variable_get('genpass_entropy', _GENPASS_REQUIRED_entropy());
// Zero-based count of characters in the allowable list: // Zero-based count of characters in the allowable list:
@ -51,9 +43,14 @@ function genpass_password() {
// Loop the number of times specified by $length. // Loop the number of times specified by $length.
for ($i = 0; $i < $length; $i++) { for ($i = 0; $i < $length; $i++) {
do {
// Find a secure random number within the range needed.
$index = ord(drupal_random_bytes(1));
} while ($index > $len);
// Each iteration, pick a random character from the // Each iteration, pick a random character from the
// allowable string and append it to the password: // allowable string and append it to the password:
$pass .= $allowable_characters[mt_rand(0, $len)]; $pass .= $allowable_characters[$index];
} }
return $pass; return $pass;
@ -97,7 +94,7 @@ function genpass_form_alter(&$form, $form_state, $form_id) {
$form['registration_cancellation']['genpass_length'] = array( $form['registration_cancellation']['genpass_length'] = array(
'#type' => 'textfield', '#type' => 'textfield',
'#title' => t('Generated password length'), '#title' => t('Generated password length'),
'#default_value' => variable_get('genpass_length', 8), '#default_value' => variable_get('genpass_length', 12),
'#size' => 2, '#size' => 2,
'#maxlength' => 2, '#maxlength' => 2,
'#description' => t('Set the length of generated passwords here. Allowed range: 5 to 32.'), '#description' => t('Set the length of generated passwords here. Allowed range: 5 to 32.'),
@ -144,7 +141,7 @@ function genpass_form_alter(&$form, $form_state, $form_id) {
$form['#validate'][] = 'genpass_register_validate'; $form['#validate'][] = 'genpass_register_validate';
// Administrator is creating the user // Administrator is creating the user
if ($_GET['q'] == 'admin/user/user/create') { if ($_GET['q'] == 'admin/people/create') {
// Switch to optional mode // Switch to optional mode
$mode = GENPASS_OPTIONAL; $mode = GENPASS_OPTIONAL;
// Help avoid obvious consequence of password being optional // Help avoid obvious consequence of password being optional
@ -200,38 +197,44 @@ function genpass_user_admin_settings_validate($form, &$form_state) {
* User registration validation. * User registration validation.
*/ */
function genpass_register_validate($form, &$form_state) { function genpass_register_validate($form, &$form_state) {
if (empty($form_state['values']['pass']) && !form_get_errors()) { if (empty($form_state['values']['pass'])) {
// Generate and set password.
// Generate and set password
$pass = genpass_generate(); $pass = genpass_generate();
$pass_item =& _genpass_get_form_item($form, 'pass'); $pass_item =& _genpass_get_form_item($form, 'pass');
form_set_value($pass_item, $pass, $form_state); form_set_value($pass_item, $pass, $form_state);
$display = variable_get('genpass_display', GENPASS_DISPLAY_BOTH); if (!form_get_errors()) {
$display = variable_get('genpass_display', GENPASS_DISPLAY_BOTH);
// Administrator created the user. // Administrator created the user.
if ($_GET['q'] == 'admin/people/create') { if ($_GET['q'] == 'admin/people/create') {
$message = t('Since you did not provide a password, it was generated automatically for this account.'); $message = t('Since you did not provide a password, it was generated automatically for this account.');
if (in_array($display, array(GENPASS_DISPLAY_ADMIN, GENPASS_DISPLAY_BOTH))) {
$message .= ' ' . t('The password is: <strong class="genpass-password">!password</strong>', array('!password' => $pass));
}
}
// Optional - User did not provide password, so it was generated
elseif ($form_state['values']['genpass_mode'] == GENPASS_OPTIONAL) {
$message = t('Since you did not provide a password, it was generated for you.');
if (in_array($display, array(GENPASS_DISPLAY_USER, GENPASS_DISPLAY_BOTH))) {
$message .= ' ' . t('Your password is: <strong class="genpass-password">!password</strong>', array('!password' => $pass));
}
}
// Restricted - User was forced to receive a generated password
elseif ($form_state['values']['genpass_mode'] == GENPASS_RESTRICTED && in_array($display, array(GENPASS_DISPLAY_USER, GENPASS_DISPLAY_BOTH))) {
$message = t('The following password was generated for you: <strong class="genpass-password">!password</strong>', array('!password' => $pass));
}
if (!empty($message)) { if (in_array($display, array(GENPASS_DISPLAY_ADMIN, GENPASS_DISPLAY_BOTH))) {
drupal_set_message($message); $message .= ' ' . t('The password is: <strong class="nowrap">@password</strong>', array('@password' => $pass));
}
}
// Optional - User did not provide password, so it was generated
elseif ($form_state['values']['genpass_mode'] == GENPASS_OPTIONAL) {
$message = t('Since you did not provide a password, it was generated for you.');
if (in_array($display, array(GENPASS_DISPLAY_USER, GENPASS_DISPLAY_BOTH))) {
$message .= ' ' . t('Your password is: <strong class="nowrap">@password</strong>', array('@password' => $pass));
}
}
// Restricted - User was forced to receive a generated password
elseif ($form_state['values']['genpass_mode'] == GENPASS_RESTRICTED && in_array($display, array(GENPASS_DISPLAY_USER, GENPASS_DISPLAY_BOTH))) {
$message = t('The following password was generated for you: <strong class="nowrap">@password</strong>', array('@password' => $pass));
}
if (!empty($message)) {
drupal_set_message($message);
}
} }
} }
return $form; return $form;
} }