identd: Remove unneeded strict attribute
[quassel.git] / src / core / ldapauthenticator.h
index 3b7c2aa..1b0b639 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-2015 by the Quassel Project                        *
+ *   Copyright (C) 2005-2018 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
 {
@@ -45,45 +51,46 @@ class LdapAuthenticator : public Authenticator
 
 public:
     LdapAuthenticator(QObject *parent = 0);
-    virtual ~LdapAuthenticator();
+    ~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);
 
     // 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