Сделал залогинивание, разлогинивание полностью рабочее

This commit is contained in:
krivoshein
2024-12-04 15:29:01 +03:00
parent 56eff211ce
commit 53b37240eb
56 changed files with 1140 additions and 826 deletions

View File

@@ -49,6 +49,24 @@ void DataParser::xmlParser(ClientHandler *client, QByteArray array)
processingSystem->processingClientAutorization(client, clientAutorization);
}
else if(xmlReader.name() == "ClientDeAutorization")
{//Запрос ДеАвторизации от клиента
ClientDeAutorization clientDeAutorization;
/*Перебираем все атрибуты тега*/
foreach(const QXmlStreamAttribute &attr, xmlReader.attributes())
{
QString name = attr.name().toString();
QString value = attr.value().toString();
//addTextToLogger(name + ": " + value);
if(name == "Login")
clientDeAutorization.Login = value;
}
processingSystem->processingClientDeAutorization(client, clientDeAutorization);
}
else if(xmlReader.name() == "ClientMessage")
{//Сообщение от клиента
@@ -220,7 +238,7 @@ QByteArray DataParser::xmlAnswer(QList<SXmlAnswerTag> listTag, QString elemUp1,
}
QByteArray DataParser::xmlAnswer_authorization(bool result, QString instructorName,QString clientName, QString accessType)
QByteArray DataParser::xmlAnswer_authorization(bool result, QString instructorName,QString clientName, QString accessType, QString login)
{
QList<SXmlAnswerTag> listTag;
@@ -229,7 +247,8 @@ QByteArray DataParser::xmlAnswer_authorization(bool result, QString instructorNa
SAttribute attribute2 = {"InstructorName", instructorName};
SAttribute attribute3 = {"ClientName", clientName};
SAttribute attribute4 = {"AccessType", accessType};
QList<SAttribute> listAttr = {attribute1, attribute2, attribute3, attribute4};
SAttribute attribute5 = {"Login", login};
QList<SAttribute> listAttr = {attribute1, attribute2, attribute3, attribute4, attribute5};
SXmlAnswerTag tag = {"ServerAuthorization", listAttr};
listTag.append(tag);
@@ -237,6 +256,20 @@ QByteArray DataParser::xmlAnswer_authorization(bool result, QString instructorNa
return xmlAnswer(listTag);
}
QByteArray DataParser::xmlAnswer_deAuthorization(bool result, QString login)
{
QList<SXmlAnswerTag> listTag;
SAttribute attribute1 = {"Result", result? "true" : "false"};
SAttribute attribute2 = {"Login", login};
QList<SAttribute> listAttr = {attribute1, attribute2};
SXmlAnswerTag tag = {"ServerDeAuthorization", listAttr};
listTag.append(tag);
return xmlAnswer(listTag);
}
QByteArray DataParser::xmlAnswer_message(QString text)
{
QList<SXmlAnswerTag> listTag;

View File

@@ -25,7 +25,8 @@ public:
void xmlFileDataParse(QByteArray array);
QByteArray xmlAnswer(QList<SXmlAnswerTag> listTag,QString elemUp1 = "", QString elemUp2 = "");
QByteArray xmlAnswer_authorization(bool result, QString instructorName, QString clientName, QString accessType);
QByteArray xmlAnswer_authorization(bool result, QString instructorName, QString clientName, QString accessType, QString login);
QByteArray xmlAnswer_deAuthorization(bool result, QString login);
QByteArray xmlAnswer_message(QString text);
QByteArray xmlAnswer_task(QString text);
QByteArray xmlAnswer_notify(QString code);

View File

@@ -42,7 +42,7 @@ void ProcessingSystem::processingClientAutorization(ClientHandler *client, Clien
instructorName = providerDBLMS->getMainInstructorName();
traineeName = providerDBLMS->getNameTraineeByLogin(clientAutorization.Login);
arrayAnswer = dataParser->xmlAnswer_authorization(true, instructorName, traineeName, "trainee");
arrayAnswer = dataParser->xmlAnswer_authorization(true, instructorName, traineeName, "trainee", clientAutorization.Login);
}
else if(providerDBLMS->authorizationInstructor(clientAutorization.Login, clientAutorization.Password))
{//Авторизуется инструктор
@@ -52,11 +52,56 @@ void ProcessingSystem::processingClientAutorization(ClientHandler *client, Clien
instructorName = providerDBLMS->getNameInstructorByLogin(clientAutorization.Login);
arrayAnswer = dataParser->xmlAnswer_authorization(true, instructorName, instructorName, "instructor");
arrayAnswer = dataParser->xmlAnswer_authorization(true, instructorName, instructorName, "instructor", clientAutorization.Login);
}
else
{//Никто не авторизовался
arrayAnswer = dataParser->xmlAnswer_authorization(false, "", "", "");
arrayAnswer = dataParser->xmlAnswer_authorization(false, "", "", "", "");
}
client->sendXmlAnswer(arrayAnswer);
QString str = QString(arrayAnswer);
//logger->addTextToLogger("To Client: " + str);
//Извещаем об изменениях в авторизации
emit sigAuthChanged();
}
void ProcessingSystem::processingClientDeAutorization(ClientHandler *client, ClientDeAutorization clientDeAutorization)
{
if(server->getStateBlockAutorization() == blocked)
{
QByteArray arrayAnswer = dataParser->xmlAnswer_notify(NOTIFY_SERVER_BLOCKED);
client->sendXmlAnswer(arrayAnswer);
QString str = QString(arrayAnswer);
emit sigLogMessage("To Client: " + str);
return;
}
//Попытка ДеАвторизации клиента (проверка по БД)
QByteArray arrayAnswer;
if(providerDBLMS->deAuthorizationTrainee(clientDeAutorization.Login))
{//ДеАвторизуется обучаемый
client->getClient()->setLogin("");
emit sigUpdateListClients();
arrayAnswer = dataParser->xmlAnswer_deAuthorization(true, clientDeAutorization.Login);
}
else if(providerDBLMS->deAuthorizationInstructor(clientDeAutorization.Login))
{//ДеАвторизуется инструктор
client->getClient()->setLogin("");
emit sigUpdateListClients();
arrayAnswer = dataParser->xmlAnswer_deAuthorization(true, clientDeAutorization.Login);
}
else
{//Никто не ДеАвторизовался
arrayAnswer = dataParser->xmlAnswer_deAuthorization(false, "");
}
client->sendXmlAnswer(arrayAnswer);

View File

@@ -24,6 +24,7 @@ public:
void initialize(DataParser* dataParser,ServerLMSWidget *server);
void processingClientAutorization(ClientHandler *client, ClientAutorization clientAutorization);
void processingClientDeAutorization(ClientHandler *client, ClientDeAutorization clientDeAutorization);
void processingClientMessage(ClientHandler *client, ClientMessage clientMessage);
void processingClientNotify(ClientHandler *client, ClientNotify clientNotify);

View File

@@ -44,6 +44,11 @@ public:
QString Password;
int NumberOfScreen;
};
class ClientDeAutorization
{
public:
QString Login;
};
class ServerMessage
{