Cutelyst  3.5.0
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/cutelyst_global.h>
9 #include <Cutelyst/plugin.h>
10 #include <Cutelyst/paramsmultimap.h>
11 #include <Cutelyst/Plugins/Authentication/authenticationuser.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 authenticate(Context *c, AuthenticationRealm *realm, const ParamsMultiMap &authinfo) = 0;
33 };
34 
35 class AuthenticationPrivate;
36 class CUTELYST_PLUGIN_AUTHENTICATION_EXPORT Authentication : public Plugin
37 {
38  Q_OBJECT
39  Q_DECLARE_PRIVATE(Authentication)
40 public:
42  static char *defaultRealm;
43 
47  Authentication(Application *parent);
48  virtual ~Authentication() override;
49 
54  void addRealm(AuthenticationRealm *realm);
55 
60  void addRealm(AuthenticationStore *store, AuthenticationCredential *credential, const QString &name = QLatin1String(defaultRealm));
61 
65  AuthenticationRealm *realm(const QString &name = QLatin1String(defaultRealm)) const;
66 
70  static bool authenticate(Context *c, const ParamsMultiMap &userinfo, const QString &realm = QLatin1String(defaultRealm));
71 
75  inline static bool authenticate(Context *c, const QString &realm = QLatin1String(defaultRealm));
76 
80  static AuthenticationUser findUser(Context *c, const ParamsMultiMap &userinfo, const QString &realm = QLatin1String(defaultRealm));
81 
86  static AuthenticationUser user(Context *c);
87 
96  static bool userExists(Context *c);
97 
102  static bool userInRealm(Context *c, const QString &realmName = QLatin1String(defaultRealm));
103 
108  static void logout(Context *c);
109 
110 protected:
111  virtual bool setup(Application *app) override;
112 
113  AuthenticationPrivate *d_ptr;
114 };
115 
116 inline bool Authentication::authenticate(Context *c, const QString &realm) {
118 }
119 
120 }
121 
122 #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