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

#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<int>(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<int>(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<int>(cmd["id"]);
int permission_level = jsonGet<int>(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<int>(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));
}