/***************************************************************************
- * Copyright (C) 2005-2015 by the Quassel Project *
+ * Copyright (C) 2005-2020 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
/* This file contains an implementation of an LDAP Authenticator, as an example
* of what a custom external auth provider could do.
- *
+ *
* It's based off of this pull request for quassel by abustany:
* https://github.com/quassel/quassel/pull/4/
- *
+ *
*/
-#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 setup(const QVariantMap &settings = QVariantMap());
- State init(const QVariantMap &settings = QVariantMap());
- UserId validateUser(const QString &user, const QString &password);
-
+ 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, 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;
int _port;
QString _bindDN;
QString _baseDN;
- QString _filter;
+ QString _filter;
QString _bindPassword;
QString _uidAttribute;
- // The actual connection object.
- LDAP *_connection;
-
+ // The actual connection object.
+ LDAP* _connection{nullptr};
};
-
-
-#endif