/** * @return User * * Fetches the session user if one is logged in. * Otherwise returns null. */ public static function getUser() { if (!Session::$sessionUser) { if (!Session::getSessionCookie()) { return null; } $sessionToken = Session::getSessionCookie(); $session = UserSession::findByToken($sessionToken); if (!$session) { return null; } // increase expire date $session->updateExpireDate(time() + 15 * 60); $session->save(); Session::$sessionUser = $session->getUser(); AccessLog::create(Session::$sessionUser->id, $session->id); } return Session::$sessionUser; }
private static function setSessionUser() { // Set sessionUser if (!Config::get('loginEnabled')) { Session::$sessionUser = false; } else { $ifc = new InterfaceObject('SessionUser'); $session = new Atom(session_id(), 'SESSION'); $sessionUsers = array_keys((array) $session->getContent($ifc, true)); if (count($sessionUsers) > 1) { throw new Exception('Multiple session users found. This is not allowed.', 500); } if (empty($sessionUsers)) { Session::$sessionUser = false; } else { Session::$sessionUser = current($sessionUsers); Notifications::addLog("Session user set to '{$sessionUser}'", 'SESSION'); } } }