#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("<user result=\"error\"/>");
    return;
    }

std::string s = "<AuthorizedBy>";
std::vector<std::string> list(u->GetAuthorizers());
for (std::vector<std::string>::const_iterator it = list.begin(); it != list.end(); ++it)
    s += "<Auth name=\"" + *it + "\"/>";
s += "</AuthorizedBy>";
answerList->push_back(s);
}