registrymanager.cpp 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #include "registrymanager.h"
  2. #include <QDebug>
  3. #include <QSettings>
  4. RegistryManager *RegistryManager::s_instance = nullptr;
  5. RegistryManager *RegistryManager::instance() {
  6. if (!s_instance) {
  7. s_instance = new RegistryManager();
  8. }
  9. return s_instance;
  10. }
  11. void RegistryManager::cleanup() {
  12. if (s_instance) {
  13. delete s_instance;
  14. s_instance = nullptr;
  15. }
  16. }
  17. RegistryManager::RegistryManager(QObject *parent) : QObject(parent) {}
  18. RegistryManager::~RegistryManager() {}
  19. bool RegistryManager::saveUserInfo(const QString &userId, const QString &username,
  20. const QString &password, const QString &identity,
  21. const QString &certName) {
  22. QSettings settings(organizationName, applicationName);
  23. settings.beginGroup(userId);
  24. settings.setValue("Username", username);
  25. settings.setValue("Password", password);
  26. settings.setValue("Identity", identity);
  27. settings.setValue("CertName", certName);
  28. qDebug() << "saved user info" << username << password << identity;
  29. settings.endGroup();
  30. if (settings.status() == QSettings::NoError) {
  31. return true;
  32. } else {
  33. return false;
  34. }
  35. }
  36. bool RegistryManager::readUserInfo(const QString &userId, QString &username, QString &password) {
  37. QSettings settings(organizationName, applicationName);
  38. settings.beginGroup(userId);
  39. if (settings.contains("Username") && settings.contains("Password")) {
  40. username = settings.value("Username").toString();
  41. password = settings.value("Password").toString();
  42. settings.endGroup();
  43. return true;
  44. } else {
  45. settings.endGroup();
  46. return false;
  47. }
  48. }
  49. QStringList RegistryManager::getAllUserIds() {
  50. QSettings settings(organizationName, applicationName);
  51. return settings.childGroups();
  52. }
  53. QStringList RegistryManager::getAllUsernames() {
  54. QStringList usernames;
  55. QMap<QString, QPair<QString, QString>> allUserInfos = getAllUserInfos();
  56. for (const auto &userInfo : allUserInfos) {
  57. usernames.append(userInfo.first);
  58. }
  59. return usernames;
  60. }
  61. QString RegistryManager::getPasswordByUsername(const QString &username) {
  62. QMap<QString, QPair<QString, QString>> allUserInfos = getAllUserInfos();
  63. for (const auto &userInfo : allUserInfos) {
  64. if (userInfo.first == username) {
  65. return userInfo.second;
  66. }
  67. }
  68. return ""; // 如果未找到匹配的用户名,返回空字符串
  69. }
  70. QMap<QString, QPair<QString, QString>> RegistryManager::getAllUserInfos() {
  71. QMap<QString, QPair<QString, QString>> allUserInfos;
  72. QStringList userIds = getAllUserIds();
  73. for (const QString &userId : userIds) {
  74. QString username, password;
  75. if (readUserInfo(userId, username, password)) {
  76. allUserInfos.insert(userId, qMakePair(username, password));
  77. }
  78. }
  79. return allUserInfos;
  80. }
  81. QMap<QString, QString> RegistryManager::getCurentLoginUser() {
  82. QMap<QString, QString> currentUserInfo;
  83. QSettings settings(organizationName, applicationName);
  84. settings.beginGroup(currentLoginUserId);
  85. settings.value("Username").toString();
  86. currentUserInfo["username"] = settings.value("Username").toString();
  87. currentUserInfo["certName"] = settings.value("CertName").toString();
  88. currentUserInfo["identity"] = settings.value("Identity").toString();
  89. settings.endGroup();
  90. return currentUserInfo;
  91. }
  92. void RegistryManager::setCurentLoginUserId(const QString &userId) { currentLoginUserId = userId; }