#include "loginwindow.h" #include "../../services/database.h" #include #include 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(); } }