From b539f9fd2b8f5d55803cbb3fc21617bee5529477 Mon Sep 17 00:00:00 2001 From: krivoshein Date: Thu, 16 Oct 2025 18:56:09 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BF=D0=B0=D1=80=D0=BE=D0=BB=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- InstructorsAndTrainees/dialognewpassword.cpp | 14 +++++++ InstructorsAndTrainees/dialognewpassword.h | 22 ++++++++++ InstructorsAndTrainees/dialognewpassword.ui | 38 ++++++++++++++++++ .../instructors/dialogeditinstructor.cpp | 33 ++++++++++++--- .../instructors/dialogeditinstructor.h | 4 ++ .../instructors/dialogeditinstructor.ui | 13 +++++- InstructorsAndTrainees/resources.qrc | 1 + .../resources/css/styleSheetMain.css | 14 ++++++- .../resources/icons/exchange.png | Bin 0 -> 15624 bytes .../trainees/dialogedittrainee.cpp | 33 ++++++++++++--- .../trainees/dialogedittrainee.h | 4 ++ .../trainees/dialogedittrainee.ui | 13 +++++- 12 files changed, 174 insertions(+), 15 deletions(-) create mode 100644 InstructorsAndTrainees/dialognewpassword.cpp create mode 100644 InstructorsAndTrainees/dialognewpassword.h create mode 100644 InstructorsAndTrainees/dialognewpassword.ui create mode 100644 InstructorsAndTrainees/resources/icons/exchange.png diff --git a/InstructorsAndTrainees/dialognewpassword.cpp b/InstructorsAndTrainees/dialognewpassword.cpp new file mode 100644 index 0000000..7f483df --- /dev/null +++ b/InstructorsAndTrainees/dialognewpassword.cpp @@ -0,0 +1,14 @@ +#include "dialognewpassword.h" +#include "ui_dialognewpassword.h" + +DialogNewPassword::DialogNewPassword(QWidget *parent) : + QDialog(parent), + ui(new Ui::DialogNewPassword) +{ + ui->setupUi(this); +} + +DialogNewPassword::~DialogNewPassword() +{ + delete ui; +} diff --git a/InstructorsAndTrainees/dialognewpassword.h b/InstructorsAndTrainees/dialognewpassword.h new file mode 100644 index 0000000..9ab267b --- /dev/null +++ b/InstructorsAndTrainees/dialognewpassword.h @@ -0,0 +1,22 @@ +#ifndef DIALOGNEWPASSWORD_H +#define DIALOGNEWPASSWORD_H + +#include + +namespace Ui { +class DialogNewPassword; +} + +class DialogNewPassword : public QDialog +{ + Q_OBJECT + +public: + explicit DialogNewPassword(QWidget *parent = nullptr); + ~DialogNewPassword(); + +private: + Ui::DialogNewPassword *ui; +}; + +#endif // DIALOGNEWPASSWORD_H diff --git a/InstructorsAndTrainees/dialognewpassword.ui b/InstructorsAndTrainees/dialognewpassword.ui new file mode 100644 index 0000000..8270f84 --- /dev/null +++ b/InstructorsAndTrainees/dialognewpassword.ui @@ -0,0 +1,38 @@ + + + DialogNewPassword + + + + 0 + 0 + 277 + 95 + + + + Dialog + + + + + + + + + + + + + + Save + + + + + + + + + + diff --git a/InstructorsAndTrainees/instructors/dialogeditinstructor.cpp b/InstructorsAndTrainees/instructors/dialogeditinstructor.cpp index 7019fb4..7fe5e2c 100644 --- a/InstructorsAndTrainees/instructors/dialogeditinstructor.cpp +++ b/InstructorsAndTrainees/instructors/dialogeditinstructor.cpp @@ -1,12 +1,14 @@ #include "dialogeditinstructor.h" #include "ui_dialogeditinstructor.h" +#include "hashtools.h" #include #include DialogEditInstructor::DialogEditInstructor(QWidget *parent) : QDialog(parent), ui(new Ui::DialogEditInstructor), - instructorInput() + instructorInput(), + flNeedHashPassword(false) { ui->setupUi(this); verify(); @@ -16,15 +18,17 @@ DialogEditInstructor::DialogEditInstructor(QWidget *parent) : ui->editPassword->setProperty("mandatoryField", true); ui->btnViewPassword->setObjectName("btnViewPassword"); + ui->btnChangePassword->setObjectName("btnChangePassword"); ui->editLogin->setValidator(new QRegExpValidator(QRegExp("[A-Za-z\\d]+"), this)); ui->editPassword->setEnabled(false); -//#ifndef PROJECT_TYPE_DEBUG +#ifndef PROJECT_TYPE_DEBUG ui->editPassword->setEchoMode(QLineEdit::EchoMode::Password); -//#endif +#endif ui->btnViewPassword->setEnabled(false); + ui->btnChangePassword->setEnabled(false); ui->btnOK->setEnabled(false); } @@ -56,8 +60,8 @@ void DialogEditInstructor::setInstructor(Instructor instructor) ui->editPassword->setEnabled(true); ui->btnViewPassword->setEnabled(true); } - //else - //ui->editPassword->setText("*****"); + else + ui->btnChangePassword->setEnabled(true); ui->btnOK->setEnabled(false); } @@ -68,7 +72,15 @@ Instructor DialogEditInstructor::getInstructor() instructor.setName(ui->editName->text()); instructor.setLogin(ui->editLogin->text()); - instructor.setPassword(ui->editPassword->text()); + + if(flNeedHashPassword) + { + QString psw = ui->editPassword->text(); + psw = HashTools::hashingMD5string(psw); + instructor.setPassword(psw); + } + else + instructor.setPassword(ui->editPassword->text()); instructor.setIsAdmin(ui->checkIsAdmin->isChecked()); instructor.setArchived(ui->checkArchived->isChecked()); @@ -116,3 +128,12 @@ void DialogEditInstructor::on_btnViewPassword_released() { ui->editPassword->setEchoMode(QLineEdit::EchoMode::Password); } + +void DialogEditInstructor::on_btnChangePassword_clicked() +{ + ui->editPassword->setEnabled(true); + ui->btnViewPassword->setEnabled(true); + + ui->editPassword->setText(""); + flNeedHashPassword = true; +} diff --git a/InstructorsAndTrainees/instructors/dialogeditinstructor.h b/InstructorsAndTrainees/instructors/dialogeditinstructor.h index 84f3aef..234e795 100644 --- a/InstructorsAndTrainees/instructors/dialogeditinstructor.h +++ b/InstructorsAndTrainees/instructors/dialogeditinstructor.h @@ -33,6 +33,8 @@ private slots: void on_btnViewPassword_released(); + void on_btnChangePassword_clicked(); + private: void verify(); @@ -40,6 +42,8 @@ private: Ui::DialogEditInstructor *ui; Instructor instructorInput; + + bool flNeedHashPassword; }; #endif // DIALOGEDITINSTRUCTOR_H diff --git a/InstructorsAndTrainees/instructors/dialogeditinstructor.ui b/InstructorsAndTrainees/instructors/dialogeditinstructor.ui index a5b9fdf..b0aaa59 100644 --- a/InstructorsAndTrainees/instructors/dialogeditinstructor.ui +++ b/InstructorsAndTrainees/instructors/dialogeditinstructor.ui @@ -6,7 +6,7 @@ 0 0 - 300 + 470 286 @@ -98,6 +98,17 @@ + + + + ... + + + + :/resources/icons/exchange.png:/resources/icons/exchange.png + + + diff --git a/InstructorsAndTrainees/resources.qrc b/InstructorsAndTrainees/resources.qrc index cbcec0f..198a0c1 100644 --- a/InstructorsAndTrainees/resources.qrc +++ b/InstructorsAndTrainees/resources.qrc @@ -54,5 +54,6 @@ resources/icons/info.png resources/icons/personalCard.png resources/icons/eye.png + resources/icons/exchange.png diff --git a/InstructorsAndTrainees/resources/css/styleSheetMain.css b/InstructorsAndTrainees/resources/css/styleSheetMain.css index 8f09dc7..a1dbcdb 100644 --- a/InstructorsAndTrainees/resources/css/styleSheetMain.css +++ b/InstructorsAndTrainees/resources/css/styleSheetMain.css @@ -87,6 +87,13 @@ QToolButton#btnAssignTask { width: 80px; height: 55px; } + +QToolButton#btnViewPassword, QToolButton#btnChangePassword { + min-width: 18px; + width: 18px; + height: 18px; +} + QPushButton:flat, QToolButton:flat { border: none; /* no border for a flat push button */ } @@ -286,7 +293,6 @@ QTextEdit#editMsg { height: 65px; /**/ background: #ddeeff; background: #ffffff; - } QTextEdit#MsgWidgetEditTextLocal { /*background: tlightgreen;*/ @@ -337,6 +343,12 @@ QLabel#MessangerWidgetLblLoggedIn { } + +QLabel#PersonalCard_lblName { + font-size: 16pt; +} + + QWidget#widgetControl { background: #E0E0E0; } diff --git a/InstructorsAndTrainees/resources/icons/exchange.png b/InstructorsAndTrainees/resources/icons/exchange.png new file mode 100644 index 0000000000000000000000000000000000000000..52930680a9b091c70f0776c0ea2dab28663d5d2b GIT binary patch literal 15624 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

ZLbcJUGehfckT4f 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 V6$1_?b|LsfJYk?ysO@m`{{V;Q5-$J% literal 0 HcmV?d00001 diff --git a/InstructorsAndTrainees/trainees/dialogedittrainee.cpp b/InstructorsAndTrainees/trainees/dialogedittrainee.cpp index e408bc6..19223ab 100644 --- a/InstructorsAndTrainees/trainees/dialogedittrainee.cpp +++ b/InstructorsAndTrainees/trainees/dialogedittrainee.cpp @@ -1,12 +1,14 @@ #include "dialogedittrainee.h" #include "ui_dialogedittrainee.h" +#include "hashtools.h" #include #include DialogEditTrainee::DialogEditTrainee(QWidget *parent) : QDialog(parent), ui(new Ui::DialogEditTrainee), - traineeInput() + traineeInput(), + flNeedHashPassword(false) { ui->setupUi(this); verify(); @@ -16,15 +18,17 @@ DialogEditTrainee::DialogEditTrainee(QWidget *parent) : ui->editPassword->setProperty("mandatoryField", true); ui->btnViewPassword->setObjectName("btnViewPassword"); + ui->btnChangePassword->setObjectName("btnChangePassword"); ui->editLogin->setValidator(new QRegExpValidator(QRegExp("[A-Za-z\\d]+"), this)); ui->editPassword->setEnabled(false); -//#ifndef PROJECT_TYPE_DEBUG +#ifndef PROJECT_TYPE_DEBUG ui->editPassword->setEchoMode(QLineEdit::EchoMode::Password); -//#endif +#endif ui->btnViewPassword->setEnabled(false); + ui->btnChangePassword->setEnabled(false); ui->btnOK->setEnabled(false); } @@ -50,8 +54,8 @@ void DialogEditTrainee::setTrainee(Trainee trainee) ui->editPassword->setEnabled(true); ui->btnViewPassword->setEnabled(true); } - //else - //ui->editPassword->setText("*****"); + else + ui->btnChangePassword->setEnabled(true); ui->btnOK->setEnabled(false); } @@ -62,7 +66,15 @@ Trainee DialogEditTrainee::getTrainee() trainee.setName(ui->editName->text()); trainee.setLogin(ui->editLogin->text()); - trainee.setPassword(ui->editPassword->text()); + + if(flNeedHashPassword) + { + QString psw = ui->editPassword->text(); + psw = HashTools::hashingMD5string(psw); + trainee.setPassword(psw); + } + else + trainee.setPassword(ui->editPassword->text()); trainee.setArchived(ui->checkArchived->isChecked()); trainee.setLoggedIn(ui->checkLoggedIn->isChecked()); @@ -109,3 +121,12 @@ void DialogEditTrainee::on_btnViewPassword_released() { ui->editPassword->setEchoMode(QLineEdit::EchoMode::Password); } + +void DialogEditTrainee::on_btnChangePassword_clicked() +{ + ui->editPassword->setEnabled(true); + ui->btnViewPassword->setEnabled(true); + + ui->editPassword->setText(""); + flNeedHashPassword = true; +} diff --git a/InstructorsAndTrainees/trainees/dialogedittrainee.h b/InstructorsAndTrainees/trainees/dialogedittrainee.h index 9a644fa..3d74133 100644 --- a/InstructorsAndTrainees/trainees/dialogedittrainee.h +++ b/InstructorsAndTrainees/trainees/dialogedittrainee.h @@ -32,6 +32,8 @@ private slots: void on_btnViewPassword_released(); + void on_btnChangePassword_clicked(); + private: void verify(); @@ -39,6 +41,8 @@ private: Ui::DialogEditTrainee *ui; Trainee traineeInput; + + bool flNeedHashPassword; }; #endif // DIALOGEDITTRAINEE_H diff --git a/InstructorsAndTrainees/trainees/dialogedittrainee.ui b/InstructorsAndTrainees/trainees/dialogedittrainee.ui index 3d5c315..b308078 100644 --- a/InstructorsAndTrainees/trainees/dialogedittrainee.ui +++ b/InstructorsAndTrainees/trainees/dialogedittrainee.ui @@ -6,7 +6,7 @@ 0 0 - 300 + 470 252 @@ -106,6 +106,17 @@ + + + + ... + + + + :/resources/icons/exchange.png:/resources/icons/exchange.png + + +