diff --git app/drupal/sites/all/modules/contrib/salt/salt.module app/drupal/sites/all/modules/contrib/salt/salt.module index 9995cd0..207c7d4 100755 --- app/drupal/sites/all/modules/contrib/salt/salt.module +++ app/drupal/sites/all/modules/contrib/salt/salt.module @@ -45,7 +45,13 @@ function salt_login_validate($form, &$form_state) { $form_state['values']['pass'] = trim($form_state['values']['pass']); if (strlen($form_state['values']['pass'])) { - $salted_pass = $form_state['values']['pass'] . variable_get('salt', ''); + if (module_exists('salt_user')) { + $user_salt = salt_user_get_salt($form_state); + $salted_pass = $form_state['values']['pass'] . $user_salt; + } + else { + $salted_pass = $form_state['values']['pass'] . variable_get('salt', ''); + } // The user_profile_form is structured differently to the login forms. if($form_state['values']['form_id'] == 'user_profile_form') { diff --git app/drupal/sites/all/modules/contrib/salt/salt_user.info app/drupal/sites/all/modules/contrib/salt/salt_user.info new file mode 100644 index 0000000..49487ce --- /dev/null +++ app/drupal/sites/all/modules/contrib/salt/salt_user.info @@ -0,0 +1,5 @@ +; $Id: salt.info,v 1.1.4.1 2008/03/29 21:57:44 karthik Exp $ +name = Salt per user +description = Stores a password salt per-user +core = 6.x +dependencies[] = salt diff --git app/drupal/sites/all/modules/contrib/salt/salt_user.install app/drupal/sites/all/modules/contrib/salt/salt_user.install new file mode 100644 index 0000000..c56399d --- /dev/null +++ app/drupal/sites/all/modules/contrib/salt/salt_user.install @@ -0,0 +1,52 @@ + 'Password salts for {users}', + 'fields' => array( + // Note: Since password storage can occur at the same time as + // user creation, uid cannot be used here. + 'name' => array( + 'type' => 'varchar', + 'length' => 60, + 'not null' => TRUE, + 'description' => 'The {users}.name that the salt corresponds to.', + ), + 'salt' => array( + 'type' => 'varchar', + 'length' => 255, + 'not null' => TRUE, + ), + ), + 'primary key' => array('name'), + ); + + return $schema; +} + +/** + * Implementation of hook_install(). + */ +function salt_user_install() { + drupal_install_schema('salt_user'); + + // Set existing user's salts to empty so logins still work. + db_query("INSERT INTO {salt_user} (name, salt) SELECT name, '' FROM {users}"); +} + +/** + * Implementation of hook_uninstall(). + */ +function salt_user_uninstall() { + drupal_uninstall_schema('salt_user'); +} \ No newline at end of file diff --git app/drupal/sites/all/modules/contrib/salt/salt_user.module app/drupal/sites/all/modules/contrib/salt/salt_user.module new file mode 100644 index 0000000..e417c78 --- /dev/null +++ app/drupal/sites/all/modules/contrib/salt/salt_user.module @@ -0,0 +1,37 @@ +name; + } + else { + $name = $form_state['values']['name']; + } + $salt = db_result(db_query("SELECT salt FROM {salt_user} WHERE name = '%s'", $name)); + if ($salt === 0) { + $salt = salt_user_make_salt($form_state['values']['name']); + $record = new stdClass; + $record->name = $form_state['values']['name']; + $record->salt = $salt; + drupal_write_record('salt_user', $record); + } + return $salt; +}