cutelyst  3.9.1
A C++ Web Framework built on top of Qt, using the simple approach of Catalyst (Perl) framework.
authentication.h
1 /*
2  * SPDX-FileCopyrightText: (C) 2013-2022 Daniel Nicoletti <dantti12@gmail.com>
3  * SPDX-License-Identifier: BSD-3-Clause
4  */
5 #ifndef AUTHENTICATION_H
6 #define AUTHENTICATION_H
7 
8 #include <Cutelyst/Plugins/Authentication/authenticationuser.h>
9 #include <Cutelyst/cutelyst_global.h>
10 #include <Cutelyst/paramsmultimap.h>
11 #include <Cutelyst/plugin.h>
12 
13 namespace Cutelyst {
14 
15 class Context;
16 class AuthenticationStore;
17 class AuthenticationRealm;
18 class CUTELYST_PLUGIN_AUTHENTICATION_EXPORT AuthenticationCredential : public QObject
19 {
20  Q_OBJECT
21 public:
25  explicit AuthenticationCredential(QObject *parent = nullptr);
26  virtual ~AuthenticationCredential();
27 
32  virtual AuthenticationUser
33  authenticate(Context *c, AuthenticationRealm *realm, const ParamsMultiMap &authinfo) = 0;
34 };
35 
36 class AuthenticationPrivate;
37 class CUTELYST_PLUGIN_AUTHENTICATION_EXPORT Authentication : public Plugin
38 {
39  Q_OBJECT
40  Q_DECLARE_PRIVATE(Authentication)
41 public:
43  static char *defaultRealm;
44 
48  Authentication(Application *parent);
49  virtual ~Authentication() override;
50 
55  void addRealm(AuthenticationRealm *realm);
56 
61  void addRealm(AuthenticationStore *store,
62  AuthenticationCredential *credential,
63  const QString &name = QLatin1String(defaultRealm));
64 
68  AuthenticationRealm *realm(const QString &name = QLatin1String(defaultRealm)) const;
69 
73  static bool authenticate(Context *c,
74  const ParamsMultiMap &userinfo,
75  const QString &realm = QLatin1String(defaultRealm));
76 
80  inline static bool authenticate(Context *c, const QString &realm = QLatin1String(defaultRealm));
81 
86  static AuthenticationUser findUser(Context *c,
87  const ParamsMultiMap &userinfo,
88  const QString &realm = QLatin1String(defaultRealm));
89 
94  static AuthenticationUser user(Context *c);
95 
104  static bool userExists(Context *c);
105 
110  static bool userInRealm(Context *c, const QString &realmName = QLatin1String(defaultRealm));
111 
116  static void logout(Context *c);
117 
118 protected:
119  virtual bool setup(Application *app) override;
120 
121  AuthenticationPrivate *d_ptr;
122 };
123 
124 inline bool Authentication::authenticate(Context *c, const QString &realm)
125 {
127 }
128 
129 } // namespace Cutelyst
130 
131 #endif // AUTHENTICATION_H
QMultiMap< QString, QString > ParamsMultiMap
The Cutelyst Context.
Definition: context.h:38
AuthenticationRealm * realm(const QString &name=QLatin1String(defaultRealm)) const
Returns an AuthenticationRealm object that was registered with name.
static bool authenticate(Context *c, const ParamsMultiMap &userinfo, const QString &realm=QLatin1String(defaultRealm))
The Cutelyst namespace holds all public Cutelyst API.
Definition: Mainpage.dox:7
static char * defaultRealm
default realm name
The Cutelyst Application.
Definition: application.h:42