File indexing completed on 2023-11-26 08:17:49
0001 /* 0002 SPDX-FileCopyrightText: 2018-2023 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "libruqolacore_export.h" 0010 #include <KPluginMetaData> 0011 #include <QObject> 0012 #include <QVector> 0013 class PluginAuthentication; 0014 class PluginUtilData 0015 { 0016 public: 0017 PluginUtilData() = default; 0018 0019 QStringList mExtraInfo; 0020 QString mIdentifier; 0021 QString mName; 0022 }; 0023 0024 class AuthenticationManagerInfo 0025 { 0026 public: 0027 AuthenticationManagerInfo() = default; 0028 0029 KPluginMetaData data; 0030 QString metaDataFileNameBaseName; 0031 QString metaDataFileName; 0032 PluginUtilData pluginData; 0033 PluginAuthentication *plugin = nullptr; 0034 }; 0035 0036 class LIBRUQOLACORE_EXPORT AuthenticationManager : public QObject 0037 { 0038 Q_OBJECT 0039 public: 0040 enum OauthType { 0041 Unknown = 0, 0042 Twitter = 1, 0043 FaceBook = 2, 0044 GitHub = 4, 0045 GitLab = 8, 0046 Google = 16, 0047 Linkedin = 32, 0048 Wordpress = 64, 0049 Password = 128, 0050 }; 0051 Q_ENUM(OauthType) 0052 Q_DECLARE_FLAGS(OauthTypes, OauthType) 0053 0054 explicit AuthenticationManager(QObject *parent = nullptr); 0055 ~AuthenticationManager() override; 0056 0057 static AuthenticationManager *self(); 0058 0059 [[nodiscard]] QVector<PluginAuthentication *> pluginsList() const; 0060 0061 private: 0062 Q_DISABLE_COPY(AuthenticationManager) 0063 LIBRUQOLACORE_NO_EXPORT void initializePluginList(); 0064 LIBRUQOLACORE_NO_EXPORT void loadPlugin(AuthenticationManagerInfo *item); 0065 LIBRUQOLACORE_NO_EXPORT PluginUtilData createPluginMetaData(const KPluginMetaData &metaData); 0066 QVector<AuthenticationManagerInfo> mPluginList; 0067 QVector<PluginUtilData> mPluginDataList; 0068 }; 0069 Q_DECLARE_METATYPE(AuthenticationManager::OauthTypes) 0070 Q_DECLARE_METATYPE(AuthenticationManager::OauthType)