diff options
Diffstat (limited to 'engine/lib/sessions.php')
-rw-r--r-- | engine/lib/sessions.php | 48 |
1 files changed, 39 insertions, 9 deletions
diff --git a/engine/lib/sessions.php b/engine/lib/sessions.php index b7d0ce90f..dda4e960a 100644 --- a/engine/lib/sessions.php +++ b/engine/lib/sessions.php @@ -87,21 +87,50 @@ if ($this->offsetGet($offset)) return true; } } + + + /** + * Return the current logged in user, or null if no user is logged in. + * + * If no user can be found in the current session, a plugin hook - 'session:get' 'user' to give plugin + * authors another way to provide user details to the ACL system without touching the session. + */ + function get_loggedin_user() + { + global $SESSION; + + return $SESSION['user']; + } + + /** + * Return the current logged in user by id. + * + * @see get_loggedin_user() + * @return int + */ + function get_loggedin_userid() + { + $user = get_loggedin_user(); + if ($user) + return $user->guid; + + return 0; + } /**
* Returns whether or not the user is currently logged in
*
- * @uses $_SESSION
* @return true|false
*/
function isloggedin() {
+
+ if (!is_installed()) return false; - global $SESSION; + $user = get_loggedin_user(); - if (!is_installed()) return false;
- if ((isset($SESSION['guid'])) && ($SESSION['guid'] > 0) && (isset($SESSION['id'])) && ($SESSION['id'] > 0) ) -
- return true;
+ if ((isset($user)) && ($user->guid > 0))
+ return true; +
return false;
}
@@ -109,15 +138,16 @@ /** * Returns whether or not the user is currently logged in and that they are an admin user. * - * @uses $_SESSION * @uses isloggedin() * @return true|false */ function isadminloggedin() { - global $SESSION; + if (!is_installed()) return false; + + $user = get_loggedin_user(); - if ((isloggedin()) && (($SESSION['user']->admin || $SESSION['user']->siteadmin))) + if ((isloggedin()) && (($user->admin || $user->siteadmin))) return true; return false; |