cutelyst  3.7.0
A C++ Web Framework built on top of Qt, using the simple approach of Catalyst (Perl) framework.
session.h
1 /*
2  * SPDX-FileCopyrightText: (C) 2013-2022 Daniel Nicoletti <dantti12@gmail.com>
3  * SPDX-License-Identifier: BSD-3-Clause
4  */
5 #ifndef CSESSION_H
6 #define CSESSION_H
7 
8 #include <QVariant>
9 
10 #include <Cutelyst/plugin.h>
11 #include <Cutelyst/cutelyst_global.h>
12 
13 namespace Cutelyst {
14 
15 class Context;
16 class CUTELYST_PLUGIN_SESSION_EXPORT SessionStore : public QObject {
17  Q_OBJECT
18 public:
22  explicit SessionStore(QObject *parent = nullptr);
23 
27  virtual QVariant getSessionData(Context *c, const QString &sid, const QString &key, const QVariant &defaultValue = QVariant()) = 0;
28 
32  virtual bool storeSessionData(Context *c, const QString &sid, const QString &key, const QVariant &value) = 0;
33 
37  virtual bool deleteSessionData(Context *c, const QString &sid, const QString &key) = 0;
38 
42  virtual bool deleteExpiredSessions(Context *c, quint64 expires) = 0;
43 };
44 
45 class SessionPrivate;
101 class CUTELYST_PLUGIN_SESSION_EXPORT Session : public Plugin
102 {
103  Q_OBJECT
104  Q_DECLARE_PRIVATE(Session)
105 public:
109  Session(Application *parent);
110  virtual ~Session();
111 
115  virtual bool setup(Application *app) final;
116 
120  void setStorage(SessionStore *store);
121 
125  SessionStore *storage() const;
126 
131  static QString id(Context *c);
132 
137  static quint64 expires(Context *c);
138 
144  static void changeExpires(Context *c, quint64 expires);
145 
152  static void deleteSession(Context *c, const QString &reason = QString());
153 
160  static QString deleteReason(Context *c);
161 
165  static QVariant value(Context *c, const QString &key, const QVariant &defaultValue = QVariant());
166 
170  static void setValue(Context *c, const QString &key, const QVariant &value);
171 
175  static void deleteValue(Context *c, const QString &key);
176 
180  static void deleteValues(Context *c, const QStringList &keys);
181 
185  static bool isValid(Context *c);
186 
187 protected:
188  SessionPrivate *d_ptr;
189 
190 private:
191  Q_PRIVATE_SLOT(d_func(), void _q_saveSession(Context*))
192 };
193 
194 }
195 
196 #endif // CSESSION_H
The Cutelyst Application.
Definition: application.h:43
The Cutelyst Context.
Definition: context.h:39
virtual bool deleteExpiredSessions(Context *c, quint64 expires)=0
virtual QVariant getSessionData(Context *c, const QString &sid, const QString &key, const QVariant &defaultValue=QVariant())=0
virtual bool storeSessionData(Context *c, const QString &sid, const QString &key, const QVariant &value)=0
virtual bool deleteSessionData(Context *c, const QString &sid, const QString &key)=0
The Cutelyst namespace holds all public Cutelyst API.
Definition: Mainpage.dox:8