Rework the handling of storage/auth backends and config
[quassel.git] / src / core / authenticator.h
index 3bec6f6..55930d9 100644 (file)
@@ -32,8 +32,8 @@ class Authenticator : public QObject {
     Q_OBJECT
 
 public:
-    Authenticator(QObject *parent = 0);
-    virtual ~Authenticator() {};
+    using QObject::QObject;
+    ~Authenticator() override = default;
 
     enum State {
         IsReady,      // ready to go
@@ -64,16 +64,18 @@ public slots:
     /** \return A string that can be displayed by the client to describe the authenticator */
     virtual QString description() const = 0;
 
-    //! Returns a list of properties required to use the authenticator backend
-    virtual QStringList setupKeys() const = 0;
+    //! Returns data required to configure the authenticator backend
+    /**
+     * A list of flattened triples for each field: {key, translated field name, default value}
+     * The default value's type determines the kind of input widget to be shown
+     * (int -> QSpinBox; QString -> QLineEdit)
+     * \return A list of triples defining the data to be shown in the configuration dialog
+     */
+    virtual QVariantList setupData() const = 0;
 
     //! Checks if the authenticator allows manual password changes from inside quassel.
     virtual bool canChangePassword() const = 0;
 
-    //! Returns a map where the keys are are properties to use the authenticator backend
-    /*  the values are QVariants with default values */
-    virtual QVariantMap setupDefaults() const = 0;
-
     //! Setup the authenticator provider.
     /** This prepares the authenticator provider (e.g. create tables, etc.) for use within Quassel.
      *  \param settings   Hostname, port, username, password, ...
@@ -93,7 +95,4 @@ public slots:
      *  \return A valid UserId if the password matches the username; 0 else
      */
     virtual UserId validateUser(const QString &user, const QString &password) = 0;
-
-private:
-
 };