*/
class SessionManager
{
+ public const KEY_LINKS_PER_PAGE = 'LINKS_PER_PAGE';
+ public const KEY_VISIBILITY = 'visibility';
+ public const KEY_UNTAGGED_ONLY = 'untaggedonly';
+
+ public const KEY_SUCCESS_MESSAGES = 'successes';
+ public const KEY_WARNING_MESSAGES = 'warnings';
+ public const KEY_ERROR_MESSAGES = 'errors';
+
/** @var int Session expiration timeout, in seconds */
public static $SHORT_TIMEOUT = 3600; // 1 hour
*/
public function hasSessionExpired()
{
+ if (empty($this->session['expires_on'])) {
+ return true;
+ }
if (time() >= $this->session['expires_on']) {
return true;
}
if ($this->conf->get('security.session_protection_disabled') === true) {
return false;
}
- if ($this->session['ip'] == $clientIpId) {
+ if (isset($this->session['ip']) && $this->session['ip'] === $clientIpId) {
return false;
}
return true;
}
+
+ /** @return array Local reference to the global $_SESSION array */
+ public function getSession(): array
+ {
+ return $this->session;
+ }
+
+ /**
+ * @param mixed $default value which will be returned if the $key is undefined
+ *
+ * @return mixed Content stored in session
+ */
+ public function getSessionParameter(string $key, $default = null)
+ {
+ return $this->session[$key] ?? $default;
+ }
+
+ /**
+ * Store a variable in user session.
+ *
+ * @param string $key Session key
+ * @param mixed $value Session value to store
+ *
+ * @return $this
+ */
+ public function setSessionParameter(string $key, $value): self
+ {
+ $this->session[$key] = $value;
+
+ return $this;
+ }
+
+ /**
+ * Store a variable in user session.
+ *
+ * @param string $key Session key
+ *
+ * @return $this
+ */
+ public function deleteSessionParameter(string $key): self
+ {
+ unset($this->session[$key]);
+
+ return $this;
+ }
}