diff -r 7fd2b8a58ae4 -r 5c807fe77020 includes/sessions.php --- a/includes/sessions.php Sun Jan 11 21:37:39 2009 -0500 +++ b/includes/sessions.php Sun Jan 11 21:37:49 2009 -0500 @@ -4046,6 +4046,35 @@ 'respawn_info' => $this->process_login_request(array('mode' => 'getkey')) ))); break; + case 'logout': + if ( !$this->started ) + $this->start(); + if ( !isset($req['csrf_token']) ) + return array( + 'mode' => 'error', + 'error' => 'Invalid CSRF token' + ); + + if ( $req['csrf_token'] !== $this->csrf_token ) + return array( + 'mode' => 'error', + 'error' => 'Invalid CSRF token' + ); + $level = isset($req['level']) && is_int($req['level']) ? $req['level'] : USER_LEVEL_MEMBER; + if ( ($result = $this->logout($level)) === 'success' ) + { + return array( + 'mode' => 'logout_success' + ); + } + else + { + return array( + 'mode' => 'error', + 'error' => $result + ); + } + break; } }