amcConfig = SimpleSAML_Configuration::getConfig('authmemcookie.php'); } /** * Retrieve the authentication source that should be used to authenticate the user. * * @return string The login type which should be used for Auth MemCookie. */ public function getAuthSource() { return $this->amcConfig->getString('authsource'); } /** * This function retrieves the name of the cookie from the configuration. * * @return string The name of the cookie. * @throws Exception If the value of the 'cookiename' configuration option is invalid. */ public function getCookieName() { $cookieName = $this->amcConfig->getString('cookiename', 'AuthMemCookie'); if (!is_string($cookieName) || strlen($cookieName) === 0) { throw new Exception( "Configuration option 'cookiename' contains an invalid value. This option should be a string." ); } return $cookieName; } /** * This function retrieves the name of the attribute which contains the username from the configuration. * * @return string The name of the attribute which contains the username. */ public function getUsernameAttr() { $usernameAttr = $this->amcConfig->getString('username', null); return $usernameAttr; } /** * This function retrieves the name of the attribute which contains the groups from the configuration. * * @return string The name of the attribute which contains the groups. */ public function getGroupsAttr() { $groupsAttr = $this->amcConfig->getString('groups', null); return $groupsAttr; } /** * This function creates and initializes a Memcache object from our configuration. * * @return Memcache A Memcache object initialized from our configuration. */ public function getMemcache() { $memcacheHost = $this->amcConfig->getString('memcache.host', '127.0.0.1'); $memcachePort = $this->amcConfig->getInteger('memcache.port', 11211); $memcache = new Memcache; foreach (explode(',', $memcacheHost) as $memcacheHost) { $memcache->addServer($memcacheHost, $memcachePort); } return $memcache; } /** * This function logs the user out by deleting the session information from memcache. */ private function doLogout() { $cookieName = $this->getCookieName(); // check if we have a valid cookie if (!array_key_exists($cookieName, $_COOKIE)) { return; } $sessionID = $_COOKIE[$cookieName]; // delete the session from memcache $memcache = $this->getMemcache(); $memcache->delete($sessionID); // delete the session cookie $sessionHandler = SimpleSAML_SessionHandler::getSessionHandler(); $sessionHandler->setCookie($cookieName, null); } /** * This function implements the logout handler. It deletes the information from Memcache. */ public static function logoutHandler() { self::getInstance()->doLogout(); } }