Files
StationManager/src/userinterfaces/windows/loginwindow.cpp
2026-04-07 15:10:13 +03:00

114 lines
4.0 KiB
C++

#include "loginwindow.h"
#include "../../services/database.h"
#include <QMessageBox>
#include <QPushButton>
LoginWindow::LoginWindow(QWidget* parent)
: QDialog(parent)
{
setWindowTitle("Авторизация - Система вокзала");
setFixedSize(700, 500);
setModal(true);
QHBoxLayout* mainLayout = new QHBoxLayout(this);
mainLayout->setSpacing(0);
mainLayout->setContentsMargins(0, 0, 0, 0);
m_bannerFrame = new QFrame(this);
m_bannerFrame->setObjectName("bannerFrame");
m_bannerFrame->setFixedWidth(280);
QVBoxLayout* bannerLayout = new QVBoxLayout(m_bannerFrame);
bannerLayout->setContentsMargins(20, 40, 20, 40);
bannerLayout->setAlignment(Qt::AlignCenter);
QLabel* logoIcon = new QLabel("🚂", m_bannerFrame);
logoIcon->setObjectName("bannerLogo");
logoIcon->setAlignment(Qt::AlignCenter);
bannerLayout->addWidget(logoIcon);
QLabel* titleBanner = new QLabel("Система учета\nжелезнодорожного\nвокзала", m_bannerFrame);
titleBanner->setObjectName("bannerTitle");
titleBanner->setAlignment(Qt::AlignCenter);
bannerLayout->addWidget(titleBanner);
bannerLayout->addSpacing(20);
bannerLayout->addStretch();
QLabel* versionLabel = new QLabel("Версия 0.1", m_bannerFrame);
versionLabel->setObjectName("bannerVersion");
versionLabel->setAlignment(Qt::AlignCenter);
bannerLayout->addWidget(versionLabel);
mainLayout->addWidget(m_bannerFrame);
QFrame* formFrame = new QFrame(this);
formFrame->setObjectName("formFrame");
QVBoxLayout* formLayout = new QVBoxLayout(formFrame);
formLayout->setContentsMargins(50, 50, 50, 50);
formLayout->setAlignment(Qt::AlignCenter);
QLabel* formTitle = new QLabel("Вход в систему", formFrame);
formTitle->setObjectName("formTitle");
formTitle->setAlignment(Qt::AlignCenter);
formLayout->addWidget(formTitle);
QLabel* userLabel = new QLabel("Логин", formFrame);
userLabel->setObjectName("userLabel");
userLabel->setProperty("class", "formLabel");
formLayout->addWidget(userLabel);
m_usernameEdit = new QLineEdit(formFrame);
m_usernameEdit->setObjectName("usernameEdit");
m_usernameEdit->setProperty("class", "formInput");
m_usernameEdit->setPlaceholderText("Введите логин");
formLayout->addWidget(m_usernameEdit);
formLayout->addSpacing(15);
QLabel* passLabel = new QLabel("Пароль", formFrame);
passLabel->setObjectName("passLabel");
passLabel->setProperty("class", "formLabel");
formLayout->addWidget(passLabel);
m_passwordEdit = new QLineEdit(formFrame);
m_passwordEdit->setObjectName("passwordEdit");
m_passwordEdit->setProperty("class", "formInput");
m_passwordEdit->setPlaceholderText("Введите пароль");
m_passwordEdit->setEchoMode(QLineEdit::Password);
formLayout->addWidget(m_passwordEdit);
formLayout->addSpacing(15);
m_messageLabel = new QLabel(formFrame);
m_messageLabel->setObjectName("messageLabel");
m_messageLabel->setAlignment(Qt::AlignCenter);
formLayout->addWidget(m_messageLabel);
m_loginBtn = new QPushButton("Войти", formFrame);
m_loginBtn->setObjectName("loginBtn");
formLayout->addWidget(m_loginBtn);
mainLayout->addWidget(formFrame);
connect(m_loginBtn, &QPushButton::clicked, this, &LoginWindow::onLoginClicked);
}
void LoginWindow::onLoginClicked() {
QString username = m_usernameEdit->text().trimmed();
QString password = m_passwordEdit->text();
if (username.isEmpty() || password.isEmpty()) {
m_messageLabel->setText("Заполните все поля!");
return;
}
if (Database::instance().authenticate(username, password)) {
User user = Database::instance().getUser(username);
m_username = user.username;
m_role = user.role;
accept();
} else {
m_messageLabel->setText("Неверный логин или пароль!");
m_passwordEdit->clear();
}
}