1 /*
2     SPDX-FileCopyrightText: 2010-2021 Laurent Montel <montel@kde.org>
3 
4     SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6 
7 #pragma once
8 
9 #include "setupobject.h"
10 #include <KLDAP/LdapServer>
11 
12 class LdapTest;
13 class KConfig;
14 
15 namespace KLDAP
16 {
17 class LdapClientSearchConfig;
18 }
19 
20 class Ldap : public SetupObject
21 {
22     Q_OBJECT
23 public:
24     explicit Ldap(QObject *parent = nullptr);
25     ~Ldap() override;
26     void create() override;
27     void destroy() override;
28     void edit();
29 public Q_SLOTS:
30     Q_SCRIPTABLE void setUser(const QString &name);
31     Q_SCRIPTABLE void setServer(const QString &server);
32     Q_SCRIPTABLE void setAuthenticationMethod(const QString &meth);
33     Q_SCRIPTABLE void setBindDn(const QString &bindDn);
34     Q_SCRIPTABLE void setBaseDn(const QString &baseDn);
35     Q_SCRIPTABLE void setPassword(const QString &password);
36     Q_SCRIPTABLE void setPort(const int port);
37     Q_SCRIPTABLE void setSecurity(const KLDAP::LdapServer::Security security);
38     Q_SCRIPTABLE void setSaslMech(const QString &saslmech);
39     Q_SCRIPTABLE void setRealm(const QString &realm);
40     Q_SCRIPTABLE void setVersion(const int version);
41     Q_SCRIPTABLE void setPageSize(const int pageSize);
42     Q_SCRIPTABLE void setTimeLimit(const int timeLimit);
43     Q_SCRIPTABLE void setSizeLimit(const int sizeLimit);
44     Q_SCRIPTABLE void setEditMode(const bool editMode);
45 
46 protected:
47     virtual KConfig *config() const;
48 
49     KLDAP::LdapClientSearchConfig *const m_clientSearchConfig;
50 
51 private:
52     friend class LdapTest;
53     void slotRestoreDone();
54     QString securityString();
55 
56     QString m_user;
57     QString m_server;
58     QString m_bindDn;
59     QString m_authMethod;
60     QString m_password;
61     QString m_mech;
62     QString m_realm;
63     QString m_baseDn;
64     int m_port = 389;
65     KLDAP::LdapServer::Security m_security = KLDAP::LdapServer::None;
66     int m_version = 3;
67     int m_pageSize = 0;
68     int m_timeLimit = 0;
69     int m_sizeLimit = 0;
70     int m_entry = -1;
71     bool m_editMode = false;
72 };
73 
74