/** * Determines whether a variable in this session section is set. * @param string name * @return bool */ public function __isset($name) { if ($this->session->exists()) { $this->start(); } return isset($this->data[$name]); }
/** * Restores current request to session. * @param string key * @return void */ public function restoreRequest($key) { $session = $this->session->getSection('Nette.Application/requests'); if (isset($session[$key])) { $request = clone $session[$key]; unset($session[$key]); $request->setFlag(NPresenterRequest::RESTORED, TRUE); $this->presenter->sendResponse(new NForwardResponse($request)); } }
/** * Sets the authenticated status of this user. * @param bool flag indicating the authenticated status of user * @return NUser provides a fluent interface */ protected function setAuthenticated($state) { $section = $this->getSessionSection(TRUE); $section->authenticated = (bool) $state; // Session Fixation defence $this->session->regenerateId(); if ($state) { $section->reason = NULL; $section->authTime = time(); // informative value } else { $section->reason = self::MANUAL; $section->authTime = NULL; } return $this; }
/** * Returns and initializes $this->sessionSection. * @return NSessionSection */ protected function getSessionSection($need) { if ($this->sessionSection !== NULL) { return $this->sessionSection; } if (!$need && !$this->sessionHandler->exists()) { return NULL; } $this->sessionSection = $section = $this->sessionHandler->getSection('Nette.Http.UserStorage/' . $this->namespace); if (!$section->identity instanceof IIdentity || !is_bool($section->authenticated)) { $section->remove(); } if ($section->authenticated && $section->expireBrowser && !$section->browserCheck) { // check if browser was closed? $section->reason = self::BROWSER_CLOSED; $section->authenticated = FALSE; if ($section->expireIdentity) { unset($section->identity); } } if ($section->authenticated && $section->expireDelta > 0) { // check time expiration if ($section->expireTime < time()) { $section->reason = self::INACTIVITY; $section->authenticated = FALSE; if ($section->expireIdentity) { unset($section->identity); } } $section->expireTime = time() + $section->expireDelta; // sliding expiration } if (!$section->authenticated) { unset($section->expireTime, $section->expireDelta, $section->expireIdentity, $section->expireBrowser, $section->browserCheck, $section->authTime); } return $this->sessionSection; }
function destroy() { if (!self::$started) { throw new InvalidStateException('Session is not started.'); } session_destroy(); $_SESSION = NULL; self::$started = FALSE; if (!$this->getHttpResponse()->isSent()) { $params = session_get_cookie_params(); $this->getHttpResponse()->deleteCookie(session_name(), $params['path'], $params['domain'], $params['secure']); } }
/** * @return NSession */ protected function createServiceSession() { $service = new NSession($this->getService('httpRequest'), $this->getService('httpResponse')); $service->setExpiration('14 days'); return $service; }