You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

128 lines
5.2 KiB

1 year ago
  1. #include "usrcmd_impl.hpp"
  2. using namespace iflytop;
  3. void UserCmdImpl::login(json& cmd, json& receipt) {
  4. string uid = cmd["userid"];
  5. string pwd = cmd["passwd"];
  6. if (uid == "admin" && pwd == "iflytop9973") {
  7. m_deviceStateService->setLoginState("admin", 0, 1);
  8. logger->info("user {} login success", "admin");
  9. } else {
  10. if (!m_dbService->isUserExist(uid)) {
  11. receipt["ackcode"] = err::zecode(err::kuser_not_exist);
  12. receipt["ackcodeInfo"] = err::zecode2str(err::kuser_not_exist);
  13. return;
  14. }
  15. if (!m_dbService->ispasswdCorrect(uid, pwd)) {
  16. receipt["ackcode"] = err::zecode(err::kpasswd_error);
  17. receipt["ackcodeInfo"] = err::zecode2str(err::kpasswd_error);
  18. return;
  19. }
  20. m_deviceStateService->setLoginState(uid, m_dbService->getUser(uid)->permission_level, m_dbService->getUser(uid)->visible);
  21. m_dbService->addUserBehaviorRecord(uid, kbehavior_login, "");
  22. logger->info("user {} login success", uid);
  23. }
  24. return;
  25. }
  26. void UserCmdImpl::unlogin(json& cmd, json& receipt) {
  27. string loginuid = m_deviceStateService->getLoginUid();
  28. m_deviceStateService->unlogin();
  29. logger->info("user unlogin success");
  30. m_dbService->addUserBehaviorRecord(loginuid, kbehavior_logout, "");
  31. return;
  32. }
  33. void UserCmdImpl::chpasswd(json& cmd, json& receipt) {
  34. string uid = cmd["userId"];
  35. string newpasswd = cmd["newpasswd"];
  36. string passwd = cmd["passwd"];
  37. logger->info("changet passwd {} {}", uid, passwd);
  38. if (!m_dbService->isUserExist(uid)) {
  39. receipt["ackcode"] = err::zecode(err::kuser_not_exist);
  40. receipt["ackcodeInfo"] = err::zecode2str(err::kuser_not_exist);
  41. return;
  42. }
  43. if (!m_dbService->ispasswdCorrect(uid, passwd)) {
  44. receipt["ackcode"] = err::zecode(err::kpasswd_error);
  45. receipt["ackcodeInfo"] = err::zecode2str(err::kpasswd_error);
  46. return;
  47. }
  48. auto user = m_dbService->changePasswd(uid, newpasswd);
  49. // kbehavior_update_user_passwd
  50. m_dbService->addUserBehaviorRecord(m_deviceStateService->getLoginUid(), kbehavior_update_user_passwd, fmt::format("({})", uid));
  51. return;
  52. }
  53. void UserCmdImpl::addUser(json& cmd, json& receipt) {
  54. string uid = cmd["uid"];
  55. string passwd = cmd["passwd"];
  56. int permission_level = jsonGet<int>(cmd["permission_level"]);
  57. m_dbService->addUser(uid, passwd, permission_level);
  58. m_dbService->addUserBehaviorRecord(m_deviceStateService->getLoginUid(), kbehavior_add_user, fmt::format("({})", uid));
  59. return;
  60. }
  61. void UserCmdImpl::delUser(json& cmd, json& receipt) {
  62. int id = jsonGet<int>(cmd["id"]);
  63. auto user = m_dbService->delUser(id);
  64. if (!user) {
  65. receipt["ackcode"] = err::zecode(err::kuser_not_exist);
  66. receipt["ackcodeInfo"] = err::zecode2str(err::kuser_not_exist);
  67. return;
  68. }
  69. m_dbService->addUserBehaviorRecord(m_deviceStateService->getLoginUid(), kbehavior_del_user, fmt::format("({})", user->uid));
  70. return;
  71. }
  72. void UserCmdImpl::updateUserPermissionLevel(json& cmd, json& receipt) {
  73. int id = jsonGet<int>(cmd["id"]);
  74. int permission_level = jsonGet<int>(cmd["permission_level"]);
  75. auto user = m_dbService->updateUserPermissionLevel(id, permission_level);
  76. if (!user) {
  77. receipt["ackcode"] = err::zecode(err::kuser_not_exist);
  78. receipt["ackcodeInfo"] = err::zecode2str(err::kuser_not_exist);
  79. return;
  80. }
  81. m_dbService->addUserBehaviorRecord(m_deviceStateService->getLoginUid(), kbehavior_update_user_permission_level,
  82. fmt::format("({},{})", user->uid, permission_level));
  83. return;
  84. }
  85. void UserCmdImpl::updateUserUid(json& cmd, json& receipt) {
  86. int id = jsonGet<int>(cmd["id"]);
  87. string uid = cmd["uid"];
  88. string olduid;
  89. auto user = m_dbService->updateUserUid(id, uid, olduid);
  90. if (!user) {
  91. receipt["ackcode"] = err::zecode(err::kuser_not_exist);
  92. receipt["ackcodeInfo"] = err::zecode2str(err::kuser_not_exist);
  93. return;
  94. }
  95. m_dbService->addUserBehaviorRecord(m_deviceStateService->getLoginUid(), kbehavior_update_user_uid, fmt::format("({}->{})", olduid, uid));
  96. }
  97. void UserCmdImpl::getAllUser(json& cmd, json& receipt) {
  98. auto users = m_dbService->getAllUserJson();
  99. receipt["dbval"] = users;
  100. return;
  101. }
  102. void UserCmdImpl::initialize() {
  103. GET_TO_SERVICE(m_msgProcesser);
  104. GET_TO_SERVICE(m_zconfig);
  105. GET_TO_SERVICE(m_iflytopwsService);
  106. GET_TO_SERVICE(m_dbService);
  107. GET_TO_SERVICE(m_deviceStateService);
  108. GET_TO_SERVICE(m_disinfectionCtrlService);
  109. GET_TO_SERVICE(m_deviceIoControlService);
  110. GET_TO_SERVICE(m_disinfectionLogsManager);
  111. GET_TO_SERVICE(m_zcanhost);
  112. GET_TO_SERVICE(m_dataExportService);
  113. GET_TO_SERVICE(m_frontMsgProcesser);
  114. m_msgProcesser->registerMsgProcesser("login", BIND(UserCmdImpl::login));
  115. m_msgProcesser->registerMsgProcesser("unlogin", BIND(UserCmdImpl::unlogin));
  116. m_msgProcesser->registerMsgProcesser("chpasswd", BIND(UserCmdImpl::chpasswd));
  117. m_msgProcesser->registerMsgProcesser("addUser", BIND(UserCmdImpl::addUser));
  118. m_msgProcesser->registerMsgProcesser("delUser", BIND(UserCmdImpl::delUser));
  119. m_msgProcesser->registerMsgProcesser("updateUserPermissionLevel", BIND(UserCmdImpl::updateUserPermissionLevel));
  120. m_msgProcesser->registerMsgProcesser("updateUserUid", BIND(UserCmdImpl::updateUserUid));
  121. m_msgProcesser->registerMsgProcesser("getAllUser", BIND(UserCmdImpl::getAllUser));
  122. }