X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/641204dfbdb9fc870cdd2e7f9e3169a44693e7bf..a903ce1ab463173c9a0af322c4c2f23076d21310:/projects/stargazer/plugins/configuration/sgconfig/parser_admin.cpp?ds=sidebyside diff --git a/projects/stargazer/plugins/configuration/sgconfig/parser_admin.cpp b/projects/stargazer/plugins/configuration/sgconfig/parser_admin.cpp index 160acc83..9d87f300 100644 --- a/projects/stargazer/plugins/configuration/sgconfig/parser_admin.cpp +++ b/projects/stargazer/plugins/configuration/sgconfig/parser_admin.cpp @@ -27,7 +27,7 @@ return -1; //----------------------------------------------------------------------------- void PARSER_GET_ADMINS::CreateAnswer() { -const PRIV * priv = currAdmin.GetPriv(); +const PRIV * priv = currAdmin->GetPriv(); if (!priv->adminChg) { //answerList->clear(); @@ -37,7 +37,7 @@ if (!priv->adminChg) return; } -string s; +std::string s; //answerList->clear(); answerList->erase(answerList->begin(), answerList->end()); @@ -99,7 +99,7 @@ if (admins->Del(adminToDel, currAdmin) == 0) } else { - string s; + std::string s; strprintf(&s, "", admins->GetStrError().c_str()); answerList->push_back(s); } @@ -155,7 +155,7 @@ if (admins->Add(adminToAdd, currAdmin) == 0) } else { - string s; + std::string s; strprintf(&s, "", admins->GetStrError().c_str()); answerList->push_back(s); } @@ -212,49 +212,44 @@ void PARSER_CHG_ADMIN::CreateAnswer() { answerList->erase(answerList->begin(), answerList->end()); -ADMIN_CONF conf; -conf.login = login; + if (!login.res_empty()) { - string s; - //if (admins->FindAdmin(login.data()) != NULL) - // { - if (!password.res_empty()) - conf.password = password.data(); + ADMIN * origAdmin = NULL; - if (!privAsString.res_empty()) - { - int p = 0; - if (str2x(privAsString.data().c_str(), p) < 0) - { - strprintf(&s, "" ); - answerList->push_back(s); - return; - } - //memcpy(&conf.priv, &p, sizeof(conf.priv)); - conf.priv.userStat = (p & 0x0003) >> 0x00; // 1+2 - conf.priv.userConf = (p & 0x000C) >> 0x02; // 4+8 - conf.priv.userCash = (p & 0x0030) >> 0x04; // 10+20 - conf.priv.userPasswd = (p & 0x00C0) >> 0x06; // 40+80 - conf.priv.userAddDel = (p & 0x0300) >> 0x08; // 100+200 - conf.priv.adminChg = (p & 0x0C00) >> 0x0A; // 400+800 - conf.priv.tariffChg = (p & 0x3000) >> 0x0C; // 1000+2000 - } + if (admins->Find(login, &origAdmin)) + { + answerList->push_back(std::string(""); + return; + } - if (admins->Change(conf, currAdmin) != 0) - { - strprintf(&s, "", admins->GetStrError().c_str()); - answerList->push_back(s); - } - else + ADMIN_CONF conf(origAdmin->GetConf()); + + if (!password.res_empty()) + conf.password = password.data(); + + if (!privAsString.res_empty()) + { + int p = 0; + if (str2x(privAsString.data().c_str(), p) < 0) { - answerList->push_back(""); + answerList->push_back(""); + return; } - return; - // } - //strprintf(&s, "", admins->GetStrError().c_str()); - //answerList->push_back(s); - //return; + + conf.priv.FromInt(p); + } + + if (admins->Change(conf, currAdmin) != 0) + { + std::string s; + strprintf(&s, "", admins->GetStrError().c_str()); + answerList->push_back(s); + } + else + { + answerList->push_back(""); + } } else {