mirror of
https://gitea.msk.dinamika-avia.ru/Constanta-Design/RRJServer.git
synced 2026-03-27 19:45:43 +03:00
отклонение запроса на Управление версиями
This commit is contained in:
@@ -592,6 +592,28 @@ void RecognizeSystem::xmlParser(QByteArray array)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(xmlReader.name() == "TryBlock")
|
||||||
|
{
|
||||||
|
bool result = false;
|
||||||
|
QString type = "";
|
||||||
|
|
||||||
|
foreach(const QXmlStreamAttribute &attr, xmlReader.attributes())
|
||||||
|
{
|
||||||
|
QString name = attr.name().toString();
|
||||||
|
QString value = attr.value().toString();
|
||||||
|
|
||||||
|
if (name == "Result"){
|
||||||
|
result = value == "true" ? true : false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (name == "Type"){
|
||||||
|
type = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
emit sigTryBlock(result, type);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if(xmlReader.name() == "VersionList")
|
if(xmlReader.name() == "VersionList")
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ signals:
|
|||||||
void sigErrorAuth(QString error);
|
void sigErrorAuth(QString error);
|
||||||
void sigAuth(ServerAuthorization *serverAuth);
|
void sigAuth(ServerAuthorization *serverAuth);
|
||||||
void sigDeAuth(ServerDeAuthorization *serverDeAuth);
|
void sigDeAuth(ServerDeAuthorization *serverDeAuth);
|
||||||
|
void sigTryBlock(bool result, QString type);
|
||||||
void sigAnswerQueryToDB(QList<Instructor>* listInstructors,
|
void sigAnswerQueryToDB(QList<Instructor>* listInstructors,
|
||||||
QList<Trainee>* listTrainees,
|
QList<Trainee>* listTrainees,
|
||||||
QList<Group>* listGroups);
|
QList<Group>* listGroups);
|
||||||
|
|||||||
@@ -150,6 +150,8 @@ void ConnectorToServer::bindConnection()
|
|||||||
connect(recognizeSystem,&RecognizeSystem::sigAuth,this,&ConnectorToServer::slot_Auth);
|
connect(recognizeSystem,&RecognizeSystem::sigAuth,this,&ConnectorToServer::slot_Auth);
|
||||||
connect(recognizeSystem,&RecognizeSystem::sigDeAuth,this,&ConnectorToServer::sigDeLoginResult);
|
connect(recognizeSystem,&RecognizeSystem::sigDeAuth,this,&ConnectorToServer::sigDeLoginResult);
|
||||||
|
|
||||||
|
connect(recognizeSystem,&RecognizeSystem::sigTryBlock,this,&ConnectorToServer::sigTryBlockResult);
|
||||||
|
|
||||||
connect(recognizeSystem,&RecognizeSystem::sigServerBlocked,this,&ConnectorToServer::slot_ServerBlocked);
|
connect(recognizeSystem,&RecognizeSystem::sigServerBlocked,this,&ConnectorToServer::slot_ServerBlocked);
|
||||||
connect(recognizeSystem,&RecognizeSystem::sigErrorAuth,this,&ConnectorToServer::slot_ErrorAuth);
|
connect(recognizeSystem,&RecognizeSystem::sigErrorAuth,this,&ConnectorToServer::slot_ErrorAuth);
|
||||||
|
|
||||||
|
|||||||
@@ -130,6 +130,9 @@ signals:
|
|||||||
|
|
||||||
void sigLoginResult(ServerAuthorization * serverAuth);
|
void sigLoginResult(ServerAuthorization * serverAuth);
|
||||||
void sigDeLoginResult(ServerDeAuthorization * serverDeAuth);
|
void sigDeLoginResult(ServerDeAuthorization * serverDeAuth);
|
||||||
|
|
||||||
|
void sigTryBlockResult(bool result, QString type);
|
||||||
|
|
||||||
void sigServerBlocked();
|
void sigServerBlocked();
|
||||||
void sigErrorAuth(QString error);
|
void sigErrorAuth(QString error);
|
||||||
|
|
||||||
|
|||||||
@@ -51,6 +51,9 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) :
|
|||||||
connectorToServer = new ConnectorToServer();
|
connectorToServer = new ConnectorToServer();
|
||||||
connect(connectorToServer, &ConnectorToServer::sigLoginResult, this, &InstructorsAndTraineesWidget::slot_checkLoginResult);
|
connect(connectorToServer, &ConnectorToServer::sigLoginResult, this, &InstructorsAndTraineesWidget::slot_checkLoginResult);
|
||||||
connect(connectorToServer, &ConnectorToServer::sigDeLoginResult, this, &InstructorsAndTraineesWidget::slot_checkDeLoginResult);
|
connect(connectorToServer, &ConnectorToServer::sigDeLoginResult, this, &InstructorsAndTraineesWidget::slot_checkDeLoginResult);
|
||||||
|
|
||||||
|
connect(connectorToServer, &ConnectorToServer::sigTryBlockResult, this, &InstructorsAndTraineesWidget::slot_checkTryBlockResult);
|
||||||
|
|
||||||
connect(connectorToServer, &ConnectorToServer::sigServerBlocked, this, &InstructorsAndTraineesWidget::slot_ServerBlocked);
|
connect(connectorToServer, &ConnectorToServer::sigServerBlocked, this, &InstructorsAndTraineesWidget::slot_ServerBlocked);
|
||||||
connect(connectorToServer, &ConnectorToServer::sigErrorAuth, this, &InstructorsAndTraineesWidget::slot_ErrorAuth);
|
connect(connectorToServer, &ConnectorToServer::sigErrorAuth, this, &InstructorsAndTraineesWidget::slot_ErrorAuth);
|
||||||
connect(connectorToServer, &ConnectorToServer::signal_SetVersion, this, &InstructorsAndTraineesWidget::slot_SetVersion);
|
connect(connectorToServer, &ConnectorToServer::signal_SetVersion, this, &InstructorsAndTraineesWidget::slot_SetVersion);
|
||||||
@@ -289,6 +292,11 @@ void InstructorsAndTraineesWidget::slot_checkDeLoginResult(ServerDeAuthorization
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void InstructorsAndTraineesWidget::slot_checkTryBlockResult(bool result, QString type)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void InstructorsAndTraineesWidget::slot_ServerBlocked()
|
void InstructorsAndTraineesWidget::slot_ServerBlocked()
|
||||||
{
|
{
|
||||||
if(flTryLogin)
|
if(flTryLogin)
|
||||||
@@ -695,6 +703,8 @@ void InstructorsAndTraineesWidget::on_btnSettings_clicked()
|
|||||||
connect(dlgSettings, &DialogSettings::signal_LanguageChanged, this, &InstructorsAndTraineesWidget::slot_LanguageChanged);
|
connect(dlgSettings, &DialogSettings::signal_LanguageChanged, this, &InstructorsAndTraineesWidget::slot_LanguageChanged);
|
||||||
connect(dlgSettings, &DialogSettings::signal_UpdateStyleSheet, this, &InstructorsAndTraineesWidget::slot_UpdateStyleSheet);
|
connect(dlgSettings, &DialogSettings::signal_UpdateStyleSheet, this, &InstructorsAndTraineesWidget::slot_UpdateStyleSheet);
|
||||||
|
|
||||||
|
connect(connectorToServer, &ConnectorToServer::sigTryBlockResult, dlgSettings, &DialogSettings::slot_checkTryBlockResult);
|
||||||
|
|
||||||
switch( dlgSettings->exec() )
|
switch( dlgSettings->exec() )
|
||||||
{
|
{
|
||||||
case QDialog::Accepted:
|
case QDialog::Accepted:
|
||||||
|
|||||||
@@ -54,6 +54,8 @@ public Q_SLOTS:
|
|||||||
//Слот обработки результата деавторизации
|
//Слот обработки результата деавторизации
|
||||||
void slot_checkDeLoginResult(ServerDeAuthorization * serverDeAuth);
|
void slot_checkDeLoginResult(ServerDeAuthorization * serverDeAuth);
|
||||||
|
|
||||||
|
void slot_checkTryBlockResult(bool result, QString type);
|
||||||
|
|
||||||
void slot_ServerBlocked();
|
void slot_ServerBlocked();
|
||||||
void slot_ErrorAuth(QString error);
|
void slot_ErrorAuth(QString error);
|
||||||
void slot_SetVersion(StreamingVersionData* serverVersion);
|
void slot_SetVersion(StreamingVersionData* serverVersion);
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
#include <QXmlStreamReader>
|
#include <QXmlStreamReader>
|
||||||
#include <QRegExpValidator>
|
#include <QRegExpValidator>
|
||||||
#include "dialogversioncontrol.h"
|
#include "dialogversioncontrol.h"
|
||||||
|
#include "specialmessagebox.h"
|
||||||
|
|
||||||
DialogSettings::DialogSettings(ConnectorToServer* connectorToServer, bool instructorIsLogged, QWidget *parent) :
|
DialogSettings::DialogSettings(ConnectorToServer* connectorToServer, bool instructorIsLogged, QWidget *parent) :
|
||||||
QDialog(parent),
|
QDialog(parent),
|
||||||
@@ -12,7 +13,8 @@ DialogSettings::DialogSettings(ConnectorToServer* connectorToServer, bool instru
|
|||||||
settings(nullptr),
|
settings(nullptr),
|
||||||
connectorToServer(nullptr),
|
connectorToServer(nullptr),
|
||||||
dlgVersionControl(nullptr),
|
dlgVersionControl(nullptr),
|
||||||
flSettingsServerChanged(false)
|
flSettingsServerChanged(false),
|
||||||
|
flTryVersionControl(false)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
|
||||||
@@ -214,19 +216,12 @@ void DialogSettings::on_btnSetVersion_clicked()
|
|||||||
if(connectorToServer)
|
if(connectorToServer)
|
||||||
if(connectorToServer->getIsConnected())
|
if(connectorToServer->getIsConnected())
|
||||||
{
|
{
|
||||||
|
flTryVersionControl = true;
|
||||||
|
|
||||||
connectorToServer->sendQueryBlockAuth(true, "VersionControl");
|
connectorToServer->sendQueryBlockAuth(true, "VersionControl");
|
||||||
|
|
||||||
dlgVersionControl = new DialogVersionControl(connectorToServer, this);
|
//TODO пока сразу
|
||||||
dlgVersionControl->initialize(connectorToServer->getLoginName());
|
//slot_VersionControl();
|
||||||
dlgVersionControl->exec();
|
|
||||||
|
|
||||||
if(dlgVersionControl)
|
|
||||||
{
|
|
||||||
delete dlgVersionControl;
|
|
||||||
dlgVersionControl = nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
connectorToServer->sendQueryBlockAuth(false, "VersionControl");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -258,3 +253,38 @@ void DialogSettings::on_DialogSettings_accepted()
|
|||||||
|
|
||||||
emit signal_LanguageChanged(language);
|
emit signal_LanguageChanged(language);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DialogSettings::slot_VersionControl()
|
||||||
|
{
|
||||||
|
dlgVersionControl = new DialogVersionControl(connectorToServer, this);
|
||||||
|
dlgVersionControl->initialize(connectorToServer->getLoginName());
|
||||||
|
dlgVersionControl->exec();
|
||||||
|
|
||||||
|
if(dlgVersionControl)
|
||||||
|
{
|
||||||
|
delete dlgVersionControl;
|
||||||
|
dlgVersionControl = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
connectorToServer->sendQueryBlockAuth(false, "VersionControl");
|
||||||
|
}
|
||||||
|
|
||||||
|
void DialogSettings::slot_checkTryBlockResult(bool result, QString type)
|
||||||
|
{
|
||||||
|
if(flTryVersionControl)
|
||||||
|
{
|
||||||
|
if(type == "VersionControl")
|
||||||
|
{
|
||||||
|
if(result)
|
||||||
|
{//Одобрено
|
||||||
|
slot_VersionControl();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{//Отказ
|
||||||
|
SpecMsgBox::WarningClose(this, tr("The server rejected your request to access version control.\nAnother instructor is managing versions.\nPlease try again later."));
|
||||||
|
}
|
||||||
|
|
||||||
|
flTryVersionControl = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -46,6 +46,11 @@ private slots:
|
|||||||
void on_editPort_textChanged(const QString &arg1);
|
void on_editPort_textChanged(const QString &arg1);
|
||||||
void on_DialogSettings_accepted();
|
void on_DialogSettings_accepted();
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void slot_VersionControl();
|
||||||
|
|
||||||
|
void slot_checkTryBlockResult(bool result, QString type);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool saveSettings();
|
bool saveSettings();
|
||||||
|
|
||||||
@@ -59,6 +64,8 @@ private:
|
|||||||
DialogVersionControl *dlgVersionControl;
|
DialogVersionControl *dlgVersionControl;
|
||||||
|
|
||||||
bool flSettingsServerChanged;
|
bool flSettingsServerChanged;
|
||||||
|
|
||||||
|
bool flTryVersionControl;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // DIALOGSETTINGS_H
|
#endif // DIALOGSETTINGS_H
|
||||||
|
|||||||
@@ -43,6 +43,20 @@ QByteArray ClientAnswerParser::deAuthorization(bool result, QString login)
|
|||||||
return dataParser->xmlAnswer(listTag);
|
return dataParser->xmlAnswer(listTag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QByteArray ClientAnswerParser::tryBlock(bool result, QString type)
|
||||||
|
{
|
||||||
|
QList<SXmlAnswerTag> listTag;
|
||||||
|
|
||||||
|
SAttribute attribute1 = {"Result", result? "true" : "false"};
|
||||||
|
SAttribute attribute2 = {"Type", type};
|
||||||
|
QList<SAttribute> listAttr = {attribute1, attribute2};
|
||||||
|
SXmlAnswerTag tag = {"TryBlock", listAttr};
|
||||||
|
|
||||||
|
listTag.append(tag);
|
||||||
|
|
||||||
|
return dataParser->xmlAnswer(listTag);
|
||||||
|
}
|
||||||
|
|
||||||
QByteArray ClientAnswerParser::message(QString loginFrom,QString loginTo,QString text)
|
QByteArray ClientAnswerParser::message(QString loginFrom,QString loginTo,QString text)
|
||||||
{
|
{
|
||||||
QList<SXmlAnswerTag> listTag;
|
QList<SXmlAnswerTag> listTag;
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ public:
|
|||||||
|
|
||||||
QByteArray authorization(bool result, QString instructorName, QString clientName, QString accessType, QString login, int id);
|
QByteArray authorization(bool result, QString instructorName, QString clientName, QString accessType, QString login, int id);
|
||||||
QByteArray deAuthorization(bool result, QString login);
|
QByteArray deAuthorization(bool result, QString login);
|
||||||
|
QByteArray tryBlock(bool result, QString type);
|
||||||
QByteArray message(QString loginFrom,QString loginTo,QString text);
|
QByteArray message(QString loginFrom,QString loginTo,QString text);
|
||||||
QByteArray task(QString text);
|
QByteArray task(QString text);
|
||||||
QByteArray notify(QString code);
|
QByteArray notify(QString code);
|
||||||
|
|||||||
@@ -188,7 +188,19 @@ void ProcessingSystem::processingClientDeAutorization(ClientHandler *client, Cli
|
|||||||
|
|
||||||
void ProcessingSystem::processingClientBlockAuth(ClientHandler *client, bool block, QString type)
|
void ProcessingSystem::processingClientBlockAuth(ClientHandler *client, bool block, QString type)
|
||||||
{
|
{
|
||||||
|
QByteArray arrayAnswer;
|
||||||
|
|
||||||
bool res = emit providerDBLMS->signal_BlockAutorization(block, client->getClient()->getFullName(), type);
|
bool res = emit providerDBLMS->signal_BlockAutorization(block, client->getClient()->getFullName(), type);
|
||||||
|
|
||||||
|
if(res)
|
||||||
|
{//Блокировка одобрена
|
||||||
|
arrayAnswer = dataParser->ClientAnswer()->tryBlock(true, type);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{//Отказ
|
||||||
|
arrayAnswer = dataParser->ClientAnswer()->tryBlock(false, type);
|
||||||
|
}
|
||||||
|
client->sendXmlAnswer(arrayAnswer);
|
||||||
}
|
}
|
||||||
|
|
||||||
//упращенная деавторизация при выключении сервера
|
//упращенная деавторизация при выключении сервера
|
||||||
|
|||||||
@@ -149,16 +149,50 @@ void MultiThreadServer::slotDisconnectClient(QString peerAddress, QString peerPo
|
|||||||
|
|
||||||
bool MultiThreadServer::slot_BlockAutorization(bool block, QString whoFullName, QString type)
|
bool MultiThreadServer::slot_BlockAutorization(bool block, QString whoFullName, QString type)
|
||||||
{
|
{
|
||||||
bool res = true;
|
bool res = false;
|
||||||
bool blockRes = false;
|
bool blockRes = false;
|
||||||
QString key = whoFullName + " [type:" + type + "]";
|
QString key = whoFullName + " [type:" + type + "]";
|
||||||
QString strTypes = "";
|
QString strTypes = "";
|
||||||
|
|
||||||
if(block)
|
if(block)
|
||||||
|
{
|
||||||
|
if(whoFullName == "SERVER")
|
||||||
{
|
{
|
||||||
this->blockAutorization();
|
this->blockAutorization();
|
||||||
blockersMap.insert(key, type);
|
blockersMap.insert(key, type);
|
||||||
blockRes = true;
|
blockRes = true;
|
||||||
|
res = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
bool flExist = false;
|
||||||
|
|
||||||
|
foreach(QString keyLocal, blockersMap.keys())
|
||||||
|
{
|
||||||
|
if(blockersMap[keyLocal] == type)
|
||||||
|
{
|
||||||
|
flExist = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!flExist)
|
||||||
|
{
|
||||||
|
this->blockAutorization();
|
||||||
|
blockersMap.insert(key, type);
|
||||||
|
blockRes = true;
|
||||||
|
res = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(!blockersMap.count())
|
||||||
|
blockRes = false;
|
||||||
|
else
|
||||||
|
blockRes = true;
|
||||||
|
|
||||||
|
res = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -170,6 +204,8 @@ bool MultiThreadServer::slot_BlockAutorization(bool block, QString whoFullName,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
blockRes = true;
|
blockRes = true;
|
||||||
|
|
||||||
|
res = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(res)
|
if(res)
|
||||||
|
|||||||
Reference in New Issue
Block a user