X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/bd3f1dd24a1af10b7c0e403397019610f727325c..e19baa83c7f24b07e8925473a0d322d6fec440f9:/projects/stargazer/plugins/configuration/sgconfig/parser_auth_by.cpp diff --git a/projects/stargazer/plugins/configuration/sgconfig/parser_auth_by.cpp b/projects/stargazer/plugins/configuration/sgconfig/parser_auth_by.cpp new file mode 100644 index 00000000..e1da75b6 --- /dev/null +++ b/projects/stargazer/plugins/configuration/sgconfig/parser_auth_by.cpp @@ -0,0 +1,46 @@ +#include "parser_auth_by.h" + +int PARSER_AUTH_BY::ParseStart(void * /*data*/, const char *el, const char **attr) +{ +if (strcasecmp(el, "GetUserAuthBy") == 0) + { + if (attr[0] && attr[1]) + login = attr[1]; + else + { + login.erase(login.begin(), login.end()); + return -1; + } + return 0; + } +return -1; +} + +int PARSER_AUTH_BY::ParseEnd(void * /*data*/, const char *el) +{ +if (strcasecmp(el, "GetUserAuthBy") == 0) + { + CreateAnswer(); + return 0; + } +return -1; +} + +void PARSER_AUTH_BY::CreateAnswer() +{ +answerList->erase(answerList->begin(), answerList->end()); + +USER_PTR u; +if (users->FindByName(login, &u)) + { + answerList->push_back(""); + return; + } + +std::string s = ""; +std::vector list(u->GetAuthorizers()); +for (std::vector::const_iterator it = list.begin(); it != list.end(); ++it) + s += ""; +s += ""; +answerList->push_back(s); +}