| 144 |
require_once(drupal_get_path('module', 'phpass') .'/PasswordHash.php'); |
require_once(drupal_get_path('module', 'phpass') .'/PasswordHash.php'); |
| 145 |
$phpass = new PasswordHash(variable_get('user_hash_strength', 8), variable_get('user_hash_portable', TRUE)); |
$phpass = new PasswordHash(variable_get('user_hash_strength', 8), variable_get('user_hash_portable', TRUE)); |
| 146 |
if ($phpass->CheckPassword($pass, $userpass->hash)) { |
if ($phpass->CheckPassword($pass, $userpass->hash)) { |
| 147 |
|
_phpass_load($userpass); |
| 148 |
return $userpass; |
return $userpass; |
| 149 |
} |
} |
| 150 |
} |
} |
| 153 |
elseif ($userpass->pass) { |
elseif ($userpass->pass) { |
| 154 |
if ($userpass->pass == md5($pass)) { |
if ($userpass->pass == md5($pass)) { |
| 155 |
_phpass_save($userpass->uid, $pass); |
_phpass_save($userpass->uid, $pass); |
| 156 |
|
_phpass_load($userpass); |
| 157 |
return $userpass; |
return $userpass; |
| 158 |
} |
} |
| 159 |
} |
} |
| 166 |
// convert the phpass hashes back to md5 hashes |
// convert the phpass hashes back to md5 hashes |
| 167 |
db_query("UPDATE {users} SET pass = '%s' WHERE uid = %d", md5($pass), $userpass->uid); |
db_query("UPDATE {users} SET pass = '%s' WHERE uid = %d", md5($pass), $userpass->uid); |
| 168 |
db_query("DELETE FROM {user_phpass} WHERE uid = %d", $userpass->uid); |
db_query("DELETE FROM {user_phpass} WHERE uid = %d", $userpass->uid); |
| 169 |
|
_phpass_load($userpass); |
| 170 |
return $userpass; |
return $userpass; |
| 171 |
} |
} |
| 172 |
} |
} |
| 176 |
return user_authenticate($user, $pass); |
return user_authenticate($user, $pass); |
| 177 |
} |
} |
| 178 |
|
|
| 179 |
|
function _phpass_load(&$user) { |
| 180 |
|
$user->roles = array(); |
| 181 |
|
if ($user->uid) { |
| 182 |
|
$user->roles[DRUPAL_AUTHENTICATED_RID] = 'authenticated user'; |
| 183 |
|
} |
| 184 |
|
else { |
| 185 |
|
$user->roles[DRUPAL_ANONYMOUS_RID] = 'anonymous user'; |
| 186 |
|
} |
| 187 |
|
$result = db_query('SELECT r.rid, r.name FROM {role} r INNER JOIN {users_roles} ur ON ur.rid = r.rid WHERE ur.uid = %d', $user->uid); |
| 188 |
|
while ($role = db_fetch_object($result)) { |
| 189 |
|
$user->roles[$role->rid] = $role->name; |
| 190 |
|
} |
| 191 |
|
$array = array(); |
| 192 |
|
user_module_invoke('load', $array, $user); |
| 193 |
|
} |
| 194 |
|
|
| 195 |
/** |
/** |
| 196 |
* Save the password |
* Save the password |
| 197 |
*/ |
*/ |