cutelyst  5.1.0
A C++ Web Framework built on top of Qt, using the simple approach of Catalyst (Perl) framework.
storeldap.h
1 /*
2  * SPDX-FileCopyrightText: (C) 2026 Daniel Nicoletti <dantti12@gmail.com>
3  * SPDX-License-Identifier: BSD-3-Clause
4  */
5 #pragma once
6 
7 #include <Cutelyst/Plugins/Authentication/authenticationstore.h>
8 
9 namespace Cutelyst {
10 
26 class CUTELYST_PLUGIN_AUTHENTICATION_EXPORT StoreLDAP : public AuthenticationStore
27 {
28 public:
32  enum class SearchScope {
33  Base,
34  OneLevel,
35  SubTree,
36  };
37 
41  StoreLDAP();
42 
46  ~StoreLDAP() override;
47 
51  AuthenticationUser findUser(Context *c, const ParamsMultiMap &userInfo) override final;
52 
56  QVariant forSession(Context *c, const AuthenticationUser &user) override final;
57 
61  AuthenticationUser fromSession(Context *c, const QVariant &frozenUser) override final;
62 
66  [[nodiscard]] bool validatePassword(Context *c,
67  const AuthenticationUser &user,
68  const QString &password) const override;
69 
73  void setServerUris(const QStringList &serverUris);
74 
78  [[nodiscard]] QStringList serverUris() const;
79 
83  void setBindDn(const QString &bindDn);
84 
88  [[nodiscard]] QString bindDn() const;
89 
93  void setBindPassword(const QString &bindPassword);
94 
98  void setUserBaseDn(const QString &baseDn);
99 
103  [[nodiscard]] QString userBaseDn() const;
104 
108  void setUserField(const QString &userField);
109 
113  [[nodiscard]] QString userField() const;
114 
118  void setIdAttribute(const QString &idAttribute);
119 
123  [[nodiscard]] QString idAttribute() const;
124 
130  void setUserFilter(const QString &userFilter);
131 
135  [[nodiscard]] QString userFilter() const;
136 
140  void setUserScope(SearchScope scope);
141 
145  [[nodiscard]] SearchScope userScope() const;
146 
150  void setAttributes(const QStringList &attributes);
151 
155  [[nodiscard]] QStringList attributes() const;
156 
160  void setStartTls(bool startTls);
161 
165  [[nodiscard]] bool startTls() const;
166 
167 private:
169  findUserByAttribute(Context *c, const QString &attribute, const QString &value);
170 
171  QStringList m_serverUris;
172  QString m_bindDn;
173  QString m_bindPassword;
174  QString m_userBaseDn;
175  QString m_userField;
176  QString m_idAttribute;
177  QString m_userFilter;
178  QStringList m_attributes;
179  SearchScope m_userScope;
180  bool m_startTls;
181 };
182 
183 } // namespace Cutelyst
Authentication store backed by an LDAP directory.
Definition: storeldap.h:27
The Cutelyst Context.
Definition: context.h:42
The Cutelyst namespace holds all public Cutelyst API.
Container for user data retrieved from an AuthenticationStore.