#include "usrcmd_impl.hpp" using namespace iflytop; void UserCmdImpl::login(json& cmd, json& receipt) { string uid = cmd["userid"]; string pwd = cmd["passwd"]; if (uid == "admin" && pwd == "iflytop9973") { m_deviceStateService->setLoginState("admin", 0, 1); logger->info("user {} login success", "admin"); } else { if (!m_dbService->isUserExist(uid)) { receipt["ackcode"] = err::zecode(err::kuser_not_exist); receipt["ackcodeInfo"] = err::zecode2str(err::kuser_not_exist); return; } if (!m_dbService->ispasswdCorrect(uid, pwd)) { receipt["ackcode"] = err::zecode(err::kpasswd_error); receipt["ackcodeInfo"] = err::zecode2str(err::kpasswd_error); return; } m_deviceStateService->setLoginState(uid, m_dbService->getUser(uid)->permission_level, m_dbService->getUser(uid)->visible); m_dbService->addUserBehaviorRecord(uid, kbehavior_login, ""); logger->info("user {} login success", uid); } return; } void UserCmdImpl::unlogin(json& cmd, json& receipt) { string loginuid = m_deviceStateService->getLoginUid(); m_deviceStateService->unlogin(); logger->info("user unlogin success"); m_dbService->addUserBehaviorRecord(loginuid, kbehavior_logout, ""); return; } void UserCmdImpl::chpasswd(json& cmd, json& receipt) { string uid = cmd["userId"]; string newpasswd = cmd["newpasswd"]; string passwd = cmd["passwd"]; logger->info("changet passwd {} {}", uid, passwd); if (!m_dbService->isUserExist(uid)) { receipt["ackcode"] = err::zecode(err::kuser_not_exist); receipt["ackcodeInfo"] = err::zecode2str(err::kuser_not_exist); return; } if (!m_dbService->ispasswdCorrect(uid, passwd)) { receipt["ackcode"] = err::zecode(err::kpasswd_error); receipt["ackcodeInfo"] = err::zecode2str(err::kpasswd_error); return; } auto user = m_dbService->changePasswd(uid, newpasswd); // kbehavior_update_user_passwd m_dbService->addUserBehaviorRecord(m_deviceStateService->getLoginUid(), kbehavior_update_user_passwd, fmt::format("({})", uid)); return; } void UserCmdImpl::addUser(json& cmd, json& receipt) { string uid = cmd["uid"]; string passwd = cmd["passwd"]; int permission_level = jsonGet(cmd["permission_level"]); m_dbService->addUser(uid, passwd, permission_level); m_dbService->addUserBehaviorRecord(m_deviceStateService->getLoginUid(), kbehavior_add_user, fmt::format("({})", uid)); return; } void UserCmdImpl::delUser(json& cmd, json& receipt) { int id = jsonGet(cmd["id"]); auto user = m_dbService->delUser(id); if (!user) { receipt["ackcode"] = err::zecode(err::kuser_not_exist); receipt["ackcodeInfo"] = err::zecode2str(err::kuser_not_exist); return; } m_dbService->addUserBehaviorRecord(m_deviceStateService->getLoginUid(), kbehavior_del_user, fmt::format("({})", user->uid)); return; } void UserCmdImpl::updateUserPermissionLevel(json& cmd, json& receipt) { int id = jsonGet(cmd["id"]); int permission_level = jsonGet(cmd["permission_level"]); auto user = m_dbService->updateUserPermissionLevel(id, permission_level); if (!user) { receipt["ackcode"] = err::zecode(err::kuser_not_exist); receipt["ackcodeInfo"] = err::zecode2str(err::kuser_not_exist); return; } m_dbService->addUserBehaviorRecord(m_deviceStateService->getLoginUid(), kbehavior_update_user_permission_level, fmt::format("({},{})", user->uid, permission_level)); return; } void UserCmdImpl::updateUserUid(json& cmd, json& receipt) { int id = jsonGet(cmd["id"]); string uid = cmd["uid"]; string olduid; auto user = m_dbService->updateUserUid(id, uid, olduid); if (!user) { receipt["ackcode"] = err::zecode(err::kuser_not_exist); receipt["ackcodeInfo"] = err::zecode2str(err::kuser_not_exist); return; } m_dbService->addUserBehaviorRecord(m_deviceStateService->getLoginUid(), kbehavior_update_user_uid, fmt::format("({}->{})", olduid, uid)); } void UserCmdImpl::getAllUser(json& cmd, json& receipt) { auto users = m_dbService->getAllUserJson(); receipt["dbval"] = users; return; } void UserCmdImpl::initialize() { GET_TO_SERVICE(m_msgProcesser); GET_TO_SERVICE(m_zconfig); GET_TO_SERVICE(m_iflytopwsService); GET_TO_SERVICE(m_dbService); GET_TO_SERVICE(m_deviceStateService); GET_TO_SERVICE(m_disinfectionCtrlService); GET_TO_SERVICE(m_deviceIoControlService); GET_TO_SERVICE(m_disinfectionLogsManager); GET_TO_SERVICE(m_zcanhost); GET_TO_SERVICE(m_dataExportService); GET_TO_SERVICE(m_frontMsgProcesser); m_msgProcesser->registerMsgProcesser("login", BIND(UserCmdImpl::login)); m_msgProcesser->registerMsgProcesser("unlogin", BIND(UserCmdImpl::unlogin)); m_msgProcesser->registerMsgProcesser("chpasswd", BIND(UserCmdImpl::chpasswd)); m_msgProcesser->registerMsgProcesser("addUser", BIND(UserCmdImpl::addUser)); m_msgProcesser->registerMsgProcesser("delUser", BIND(UserCmdImpl::delUser)); m_msgProcesser->registerMsgProcesser("updateUserPermissionLevel", BIND(UserCmdImpl::updateUserPermissionLevel)); m_msgProcesser->registerMsgProcesser("updateUserUid", BIND(UserCmdImpl::updateUserUid)); m_msgProcesser->registerMsgProcesser("getAllUser", BIND(UserCmdImpl::getAllUser)); }