/***************************************************************************
- * Copyright (C) 2005-2015 by the Quassel Project *
+ * Copyright (C) 2005-2019 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
*
*/
-#ifndef LDAPAUTHENTICATOR_H
-#define LDAPAUTHENTICATOR_H
+#pragma once
#include "authenticator.h"
-
#include "core.h"
// Link against LDAP.
+/* We should use openldap on windows if at all possible, rather than trying to
+ * write some kind of compatiblity routine.
+#ifdef Q_CC_MSVC
+#include <windows.h>
+#include <winldap.h>
+#else*/
#include <ldap.h>
+//#endif
// Default LDAP server port.
-#define DEFAULT_LDAP_PORT 389
+constexpr int DEFAULT_LDAP_PORT = 389;
class LdapAuthenticator : public Authenticator
{
Q_OBJECT
public:
- LdapAuthenticator(QObject *parent = 0);
- virtual ~LdapAuthenticator();
+ LdapAuthenticator(QObject* parent = nullptr);
+ ~LdapAuthenticator() override;
public slots:
/* General */
- bool isAvailable() const;
- QString displayName() const;
- QString description() const;
- virtual QStringList setupKeys() const;
- virtual QVariantMap setupDefaults() const;
+ bool isAvailable() const override;
+ QString backendId() const override;
+ QString displayName() const override;
+ QString description() const override;
+ QVariantList setupData() const override;
+
+ bool canChangePassword() const override { return false; }
- bool setup(const QVariantMap &settings = QVariantMap());
- State init(const QVariantMap &settings = QVariantMap());
- UserId validateUser(const QString &user, const QString &password);
+ bool setup(const QVariantMap& settings, const QProcessEnvironment& environment, bool loadFromEnvironment) override;
+ State init(const QVariantMap& settings, const QProcessEnvironment& environment, bool loadFromEnvironment) override;
+ UserId validateUser(const QString& user, const QString& password) override;
protected:
- virtual void setConnectionProperties(const QVariantMap &properties);
+ void setAuthProperties(const QVariantMap& properties, const QProcessEnvironment& environment, bool loadFromEnvironment);
bool ldapConnect();
void ldapDisconnect();
- bool ldapAuth(const QString &username, const QString &password);
+ bool ldapAuth(const QString& username, const QString& password);
// Protected methods for retrieving info about the LDAP connection.
- inline virtual QString hostName() { return _hostName; }
- inline virtual int port() { return _port; }
- inline virtual QString bindDN() { return _bindDN; }
- inline virtual QString baseDN() { return _baseDN; }
+ QString hostName() const { return _hostName; }
+ int port() const { return _port; }
+ QString bindDN() const { return _bindDN; }
+ QString baseDN() const { return _baseDN; }
private:
QString _hostName;
QString _uidAttribute;
// The actual connection object.
- LDAP *_connection;
-
+ LDAP* _connection{nullptr};
};
-
-
-#endif