File indexing completed on 2023-11-26 08:17:53
0001 /* 0002 SPDX-FileCopyrightText: 2017-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 <QObject> 0011 #include <QString> 0012 0013 namespace QKeychain 0014 { 0015 class Job; 0016 } 0017 0018 class QSettings; 0019 class LIBRUQOLACORE_EXPORT RocketChatAccountSettings : public QObject 0020 { 0021 Q_OBJECT 0022 public: 0023 explicit RocketChatAccountSettings(const QString &accountFileName = QString(), QObject *parent = nullptr); 0024 ~RocketChatAccountSettings() override; 0025 0026 [[nodiscard]] bool isValid() const; 0027 0028 [[nodiscard]] QString userId() const; 0029 void setUserId(const QString &userId); 0030 0031 [[nodiscard]] QString authToken() const; 0032 void setAuthToken(const QString &authToken); 0033 0034 // account info 0035 [[nodiscard]] QString serverUrl() const; 0036 void setServerUrl(const QString &serverUrl); 0037 0038 [[nodiscard]] QString accountName() const; 0039 void setAccountName(const QString &accountName); 0040 0041 [[nodiscard]] QString userName() const; 0042 void setUserName(const QString &userName); 0043 0044 [[nodiscard]] QString twoFactorAuthenticationCode() const; 0045 void setTwoFactorAuthenticationCode(const QString &twoFactorAuthenticationCode); 0046 0047 void logout(); 0048 [[nodiscard]] QString cacheBasePath(); 0049 0050 [[nodiscard]] QString password() const; 0051 void setPassword(const QString &password); 0052 0053 void removeSettings(); 0054 0055 [[nodiscard]] qint64 expireToken() const; 0056 void setExpireToken(qint64 expireToken); 0057 0058 [[nodiscard]] bool tokenExpired() const; 0059 0060 [[nodiscard]] bool accountEnabled() const; 0061 void setAccountEnabled(bool accountEnabled); 0062 0063 [[nodiscard]] QString lastSelectedRoom() const; 0064 void setLastSelectedRoom(const QString &roomId); 0065 0066 [[nodiscard]] QString displayName() const; 0067 void setDisplayName(const QString &displayName); 0068 0069 Q_SIGNALS: 0070 void serverURLChanged(); 0071 void userNameChanged(); 0072 void userIdChanged(); 0073 void accountNameChanged(); 0074 void passwordChanged(); 0075 void twoFactorAuthenticationCodeChanged(); 0076 void enableAccountChanged(); 0077 void displayNameChanged(); 0078 0079 private: 0080 Q_DISABLE_COPY(RocketChatAccountSettings) 0081 LIBRUQOLACORE_NO_EXPORT void initializeSettings(const QString &accountFileName); 0082 LIBRUQOLACORE_NO_EXPORT void slotPasswordRead(QKeychain::Job *job); 0083 LIBRUQOLACORE_NO_EXPORT void slotPasswordWritten(QKeychain::Job *job); 0084 0085 QString mUserId; 0086 QString mAuthToken; 0087 QString mServerUrl; 0088 QString mAccountName; 0089 QString mDisplayName; 0090 QString mCachePath; 0091 QString mUserName; 0092 QString mPassword; 0093 bool mUseLdap = false; 0094 QString mTwoFactorAuthenticationCode; 0095 qint64 mExpireToken = -1; 0096 QSettings *mSetting = nullptr; 0097 bool mAccountEnabled = true; 0098 };