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;
92 class CUTELYST_PLUGIN_SESSION_EXPORT Session : public Plugin
93 {
94  Q_OBJECT
95  Q_DECLARE_PRIVATE(Session)
96 public:
100  Session(Application *parent);
101  virtual ~Session();
102 
106  virtual bool setup(Application *app) final;
107 
111  void setStorage(SessionStore *store);
112 
116  SessionStore *storage() const;
117 
122  static QString id(Context *c);
123 
128  static quint64 expires(Context *c);
129 
135  static void changeExpires(Context *c, quint64 expires);
136 
143  static void deleteSession(Context *c, const QString &reason = QString());
144 
151  static QString deleteReason(Context *c);
152 
156  static QVariant value(Context *c, const QString &key, const QVariant &defaultValue = QVariant());
157 
161  static void setValue(Context *c, const QString &key, const QVariant &value);
162 
166  static void deleteValue(Context *c, const QString &key);
167 
171  static void deleteValues(Context *c, const QStringList &keys);
172 
176  static bool isValid(Context *c);
177 
178 protected:
179  SessionPrivate *d_ptr;
180 
181 private:
182  Q_PRIVATE_SLOT(d_func(), void _q_saveSession(Context*))
183 };
184 
185 }
186 
187 #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