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

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

@@ -11,6 +11,8 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) :
dbLMS(nullptr),
viewerTrainees(nullptr),
viewerInstructors(nullptr),
messangerWidget(nullptr),
docTasksWidget(nullptr),
adminMode(false),
loginInstructorLoggedInLocal(QStringLiteral(""))
{
@@ -18,35 +20,31 @@ InstructorsAndTraineesWidget::InstructorsAndTraineesWidget(QWidget *parent) :
connectorToServer = new ConnectorToServer(this);
connect(connectorToServer,&ConnectorToServer::sigLoginResult,this,&InstructorsAndTraineesWidget::checkLoginResult);
connect(connectorToServer,&ConnectorToServer::sigDeLoginResult,this,&InstructorsAndTraineesWidget::checkDeLoginResult);
dbLMS = new InterfaceDataBaseLMS(this);
connect(this, &InstructorsAndTraineesWidget::signal_LanguageChanged, dbLMS, &InterfaceDataBaseLMS::slot_LanguageChanged);
viewerTrainees = new ViewerTrainees(dbLMS);
viewerInstructors = new ViewerInstructors(dbLMS);
messangerWidget = new MessangerWidget(this);
connect(this, &InstructorsAndTraineesWidget::signal_NeedUpdateUI, viewerTrainees, &ViewerTrainees::slot_NeedUpdateUI);
connect(this, &InstructorsAndTraineesWidget::signal_NeedUpdateUI, viewerInstructors, &ViewerInstructors::slot_NeedUpdateUI);
connect(viewerInstructors, &ViewerInstructors::signal_BlockAutorization, this, &InstructorsAndTraineesWidget::signal_BlockAutorization);
connect(viewerTrainees, &ViewerTrainees::signal_BlockAutorization, this, &InstructorsAndTraineesWidget::signal_BlockAutorization);
connect(viewerTrainees, &ViewerTrainees::signal_traineeSelected, this, &InstructorsAndTraineesWidget::signal_traineeSelected);
connect(this, &InstructorsAndTraineesWidget::signal_tabMessengerChanged, viewerTrainees, &ViewerTrainees::slot_tabMessengerChanged);
ui->verticalLayout->addWidget(viewerTrainees);
ui->verticalLayout->addWidget(viewerInstructors);
ui->verticalLayout->addWidget(messangerWidget);
messangerWidget = new MessangerWidget(this);
docTasksWidget = new DocTasksWidget(this);
ui->verticalLayout_1->addWidget(viewerTrainees);
ui->verticalLayout_1->addWidget(viewerInstructors);
ui->verticalLayout_1->addWidget(messangerWidget);
ui->verticalLayout_2->addWidget(docTasksWidget);
viewerTrainees->setMinimumSize(1600, 600);
viewerInstructors->setMinimumSize(1600, 300);
//ui->btnAuthorizationInstructor->setEnabled(false);
//ui->btnConnectionToDB->click();
}
InstructorsAndTraineesWidget::~InstructorsAndTraineesWidget()
@@ -62,6 +60,8 @@ InstructorsAndTraineesWidget::~InstructorsAndTraineesWidget()
dbLMS->DisConnectionFromDB();
}
delete docTasksWidget;
delete messangerWidget;
delete viewerInstructors;
delete viewerTrainees;
delete dbLMS;
@@ -86,7 +86,7 @@ void InstructorsAndTraineesWidget::changeEvent(QEvent *event)
else
ui->btnConnectionToDB->setText(tr("Connection DB"));
updateLabelLoggedInInstructor();
updateLabelLoggedInInstructor(loginInstructorLoggedInLocal, "???");
}
}
@@ -102,7 +102,7 @@ void InstructorsAndTraineesWidget::checkLoginResult(ServerAuthorization *serverA
{
if (serverAuth->Result)
{
loginInstructorLoggedInLocal = serverAuth->ClientName;
loginInstructorLoggedInLocal = serverAuth->Login;
if(loginInstructorLoggedInLocal == QStringLiteral("admin"))
adminMode = true;
@@ -114,11 +114,11 @@ void InstructorsAndTraineesWidget::checkLoginResult(ServerAuthorization *serverA
viewerInstructors->setAuthComplited(true);
viewerTrainees->setAuthComplited(true);
//Q_EMIT signal_NeedUpdateUI(true, true);
Q_EMIT signal_NeedUpdateUI(true, true);
ui->btnAuthorizationInstructor->setText(tr("Deauthorization Instructor"));
//updateLabelLoggedInInstructor();
updateLabelLoggedInInstructor(serverAuth->Login, serverAuth->ClientName);
//Q_EMIT signal_NeedUpdateUI(true, true);
@@ -130,7 +130,33 @@ void InstructorsAndTraineesWidget::checkLoginResult(ServerAuthorization *serverA
}
}
bool InstructorsAndTraineesWidget::authorizationInstructorLocal(QWidget* parent)
void InstructorsAndTraineesWidget::checkDeLoginResult(ServerDeAuthorization *serverDeAuth)
{
if (serverDeAuth->Result)
{
loginInstructorLoggedInLocal = QStringLiteral("");
adminMode = false;
viewerInstructors->setAdminMode(adminMode);
viewerTrainees->setAdminMode(adminMode);
viewerInstructors->setAuthComplited(false);
viewerTrainees->setAuthComplited(false);
Q_EMIT signal_NeedUpdateUI(true, false);
ui->btnAuthorizationInstructor->setText(tr("Authorization Instructor"));
updateLabelLoggedInInstructor("","");
QMessageBox::information(this, tr("Instructor deauthorization"), tr("Successfully!"));
}
else
{
QMessageBox::warning(this, tr("Instructor deauthorization"), tr("Error!"));
}
}
bool InstructorsAndTraineesWidget::authorizationInstructorDialog(QWidget* parent)
{
DialogAuthorizationInstructor dlg(parent);
dlg.setWindowTitle(tr("Instructor authorization"));
@@ -160,115 +186,25 @@ bool InstructorsAndTraineesWidget::authorizationInstructorLocal(QWidget* parent)
return false;
}
bool InstructorsAndTraineesWidget::authorizationIsCompleted()
{
if(loginInstructorLoggedInLocal == QStringLiteral(""))
return false;
else
return true;
}
bool InstructorsAndTraineesWidget::authorizationTrainee(QString login, QString password, QString classroom_name, QString computer_name)
{
mtxAccess.lock();
if(! dbLMS->DBisConnected())
{
mtxAccess.unlock();
return false;
}
Q_EMIT signal_BlockAutorization(true);
bool res = dbLMS->AuthorizationTrainee(login, password, classroom_name, computer_name);
Q_EMIT signal_BlockAutorization(false);
if(res)
Q_EMIT signal_NeedUpdateUI(false, true);
mtxAccess.unlock();
return res;
}
bool InstructorsAndTraineesWidget::deAuthorizationTrainee(QString login)
{
mtxAccess.lock();
if(! dbLMS->DBisConnected())
{
mtxAccess.unlock();
return false;
}
Q_EMIT signal_BlockAutorization(true);
bool res = dbLMS->deAuthorizationTrainee(login);
Q_EMIT signal_BlockAutorization(false);
if(res)
Q_EMIT signal_NeedUpdateUI(false, true);
mtxAccess.unlock();
return res;
}
QString InstructorsAndTraineesWidget::getNameTraineeByLogin(QString login)
{
mtxAccess.lock();
if(! dbLMS->DBisConnected())
{
mtxAccess.unlock();
return QStringLiteral("");
}
QString res = dbLMS->getNameTraineeByLogin(login);
mtxAccess.unlock();
return res;
}
bool InstructorsAndTraineesWidget::authorizationInstructor(QString login, QString password)
{
mtxAccess.lock();
if(! dbLMS->DBisConnected())
{
mtxAccess.unlock();
return false;
}
Q_EMIT signal_BlockAutorization(true);
bool res = dbLMS->AuthorizationInstructor(login, password);
Q_EMIT signal_BlockAutorization(false);
if(res)
Q_EMIT signal_NeedUpdateUI(true, false);
mtxAccess.unlock();
return res;
}
bool InstructorsAndTraineesWidget::deAuthorizationInstructor(QString login)
{
mtxAccess.lock();
/*
if(! dbLMS->DBisConnected())
{
mtxAccess.unlock();
return false;
}
}*/
Q_EMIT signal_BlockAutorization(true);
//Q_EMIT signal_BlockAutorization(true);
bool res = dbLMS->deAuthorizationInstructor(login);
//bool res = dbLMS->deAuthorizationInstructor(login);
connectorToServer->deAuthorizationInstructorLocal(login);
Q_EMIT signal_BlockAutorization(false);
//Q_EMIT signal_BlockAutorization(false);
/*
if(res)
{
if(loginInstructorLoggedInLocal == login)
@@ -285,50 +221,21 @@ bool InstructorsAndTraineesWidget::deAuthorizationInstructor(QString login)
}
else
Q_EMIT signal_NeedUpdateUI(true, false);
}
} */
mtxAccess.unlock();
return res;
return /*res*/true;
}
QString InstructorsAndTraineesWidget::getNameInstructorByLogin(QString login)
bool InstructorsAndTraineesWidget::authorizationIsCompleted()
{
mtxAccess.lock();
if(! dbLMS->DBisConnected())
{
mtxAccess.unlock();
return QStringLiteral("");
}
QString res = dbLMS->getNameInstructorByLogin(login);
mtxAccess.unlock();
return res;
if(loginInstructorLoggedInLocal == QStringLiteral(""))
return false;
else
return true;
}
QString InstructorsAndTraineesWidget::getMainInstructorName()
{
mtxAccess.lock();
if(! dbLMS->DBisConnected())
{
mtxAccess.unlock();
return QStringLiteral("");
}
QString res = dbLMS->getNameInstructorByLogin(loginInstructorLoggedInLocal);
mtxAccess.unlock();
return res;
}
/*
QList<Trainee> InstructorsAndTraineesWidget::getListTrainees()
{
return dbLMS->getListTrainees();
}
*/
void InstructorsAndTraineesWidget::on_btnConnectionToDB_clicked()
{
bool stateIsChecked = ui->btnConnectionToDB->isChecked();
@@ -384,7 +291,7 @@ void InstructorsAndTraineesWidget::on_btnAuthorizationInstructor_clicked()
if(stateIsChecked)
{//Авторизация Инструктора локальная (Администратора)
if(authorizationInstructorLocal(this))
if(authorizationInstructorDialog(this))
{
}
@@ -397,30 +304,30 @@ void InstructorsAndTraineesWidget::on_btnAuthorizationInstructor_clicked()
{
if(deAuthorizationInstructor(loginInstructorLoggedInLocal))
{
ui->btnAuthorizationInstructor->setText(tr("Authorization Instructor"));
//ui->btnAuthorizationInstructor->setText(tr("Authorization Instructor"));
//updateLabelLoggedInInstructor();
Q_EMIT signal_NeedUpdateUI(true, true);
//Q_EMIT signal_NeedUpdateUI(true, true);
}
}
}
}
void InstructorsAndTraineesWidget::updateLabelLoggedInInstructor()
void InstructorsAndTraineesWidget::updateLabelLoggedInInstructor(QString login, QString name)
{
mtxAccess.lock();
/*
if(! dbLMS->DBisConnected())
{
mtxAccess.unlock();
return;
}
}*/
if(authorizationIsCompleted())
{
QString nameLoggedInInstructor = QString("%1 (%2)").arg(
dbLMS->getNameInstructorByLogin(loginInstructorLoggedInLocal), loginInstructorLoggedInLocal);
QString nameLoggedInInstructor = QString("%1 (%2)").arg(name, login);
ui->lblLoggedInInstructor->setText(nameLoggedInInstructor);
if(loginInstructorLoggedInLocal == QStringLiteral("admin"))
ui->lblLoggedIn->setPixmap(QPixmap(QStringLiteral(":/icons/admin.png")));
@@ -436,18 +343,7 @@ void InstructorsAndTraineesWidget::updateLabelLoggedInInstructor()
mtxAccess.unlock();
}
void InstructorsAndTraineesWidget::on_btnDocTasks_clicked()
{
DocTasksWidget docTasks(this);
QDialog* dialog = new QDialog(this);
QHBoxLayout *layout = new QHBoxLayout(dialog);
layout->addWidget(&docTasks);
dialog->setWindowTitle(tr("Doc tasks"));
dialog->setMinimumSize(1200, 800);
dialog->exec();
}
void InstructorsAndTraineesWidget::on_toolButton_clicked()
void InstructorsAndTraineesWidget::on_btnUpdateStyleSheet_clicked()
{
viewerTrainees->updateMyStyleSheet();
viewerInstructors->updateMyStyleSheet();