From 1a195adf39f168c987c888e2f7c3ffbc2eec1947 Mon Sep 17 00:00:00 2001 From: Marco Date: Mon, 18 Sep 2017 16:01:47 +0200 Subject: [PATCH] Implement method 'logOutButKeepSession' in class 'Auth' --- src/Auth.php | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/Auth.php b/src/Auth.php index 5a6904c..3a6a11a 100644 --- a/src/Auth.php +++ b/src/Auth.php @@ -309,6 +309,34 @@ final class Auth extends UserManager { } } + /** + * Logs the user out + * + * @throws AuthError if an internal problem occurred (do *not* catch) + */ + public function logOutButKeepSession() { + // if the user has been signed in + if ($this->isLoggedIn()) { + // get the user's ID + $userId = $this->getUserId(); + + // if a user ID was set + if (isset($userId)) { + // delete any existing remember directives + $this->deleteRememberDirective($userId); + } + + // remove all session variables maintained by this library + unset($_SESSION[self::SESSION_FIELD_LOGGED_IN]); + unset($_SESSION[self::SESSION_FIELD_USER_ID]); + unset($_SESSION[self::SESSION_FIELD_EMAIL]); + unset($_SESSION[self::SESSION_FIELD_USERNAME]); + unset($_SESSION[self::SESSION_FIELD_STATUS]); + unset($_SESSION[self::SESSION_FIELD_ROLES]); + unset($_SESSION[self::SESSION_FIELD_REMEMBERED]); + } + } + /** * Creates a new directive keeping the user logged in ("remember me") *