- Patch #90612 by Bart Jansens: user_logout should only end the current session.
parent
47f527fbbe
commit
ab1d68d166
|
@ -731,7 +731,7 @@ function _drupal_bootstrap($phase) {
|
||||||
|
|
||||||
case DRUPAL_BOOTSTRAP_SESSION:
|
case DRUPAL_BOOTSTRAP_SESSION:
|
||||||
require_once './includes/session.inc';
|
require_once './includes/session.inc';
|
||||||
session_set_save_handler("sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc");
|
session_set_save_handler('sess_open', 'sess_close', 'sess_read', 'sess_write', 'sess_destroy_sid', 'sess_gc');
|
||||||
session_start();
|
session_start();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -125,13 +125,21 @@ function sess_count($timestamp = 0, $anonymous = true) {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called by PHP session handling with the PHP session ID to end a user's session.
|
* Called by PHP session handling with the PHP session ID to end a user's session.
|
||||||
* Can also be called directly, either with the PHP session ID or another identifier
|
*
|
||||||
* such as uid to end a specific user's session.
|
* @param string $sid
|
||||||
|
* the session id
|
||||||
|
*/
|
||||||
|
function sess_destroy_sid($sid) {
|
||||||
|
db_query("DELETE FROM {sessions} WHERE sid = '%s'", $sid);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* End a specific user's session
|
||||||
*
|
*
|
||||||
* @param string $uid
|
* @param string $uid
|
||||||
* the user id
|
* the user id
|
||||||
*/
|
*/
|
||||||
function sess_destroy($uid) {
|
function sess_destroy_uid($uid) {
|
||||||
db_query('DELETE FROM {sessions} WHERE uid = %d', $uid);
|
db_query('DELETE FROM {sessions} WHERE uid = %d', $uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -148,7 +148,7 @@ function user_save($account, $array = array(), $category = 'account') {
|
||||||
|
|
||||||
// Delete a blocked user's sessions to kick them if they are online.
|
// Delete a blocked user's sessions to kick them if they are online.
|
||||||
if (isset($array['status']) && $array['status'] == 0) {
|
if (isset($array['status']) && $array['status'] == 0) {
|
||||||
sess_destroy($account->uid);
|
sess_destroy_uid($account->uid);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Refresh user object
|
// Refresh user object
|
||||||
|
@ -1014,7 +1014,7 @@ function user_logout() {
|
||||||
watchdog('user', t('Session closed for %name.', array('%name' => $user->name)));
|
watchdog('user', t('Session closed for %name.', array('%name' => $user->name)));
|
||||||
|
|
||||||
// Destroy the current session:
|
// Destroy the current session:
|
||||||
sess_destroy($user->uid);
|
session_destroy();
|
||||||
module_invoke_all('user', 'logout', NULL, $user);
|
module_invoke_all('user', 'logout', NULL, $user);
|
||||||
|
|
||||||
// Load the anonymous user
|
// Load the anonymous user
|
||||||
|
@ -1444,7 +1444,7 @@ function user_confirm_delete($name, $uid) {
|
||||||
*/
|
*/
|
||||||
function user_delete($edit, $uid) {
|
function user_delete($edit, $uid) {
|
||||||
$account = user_load(array('uid' => $uid));
|
$account = user_load(array('uid' => $uid));
|
||||||
sess_destroy($uid);
|
sess_destroy_uid($uid);
|
||||||
db_query('DELETE FROM {users} WHERE uid = %d', $uid);
|
db_query('DELETE FROM {users} WHERE uid = %d', $uid);
|
||||||
db_query('DELETE FROM {users_roles} WHERE uid = %d', $uid);
|
db_query('DELETE FROM {users_roles} WHERE uid = %d', $uid);
|
||||||
db_query('DELETE FROM {authmap} WHERE uid = %d', $uid);
|
db_query('DELETE FROM {authmap} WHERE uid = %d', $uid);
|
||||||
|
|
Loading…
Reference in New Issue