79 lines
2.4 KiB
C++
79 lines
2.4 KiB
C++
#include "dialogloginuseradd.h"
|
|
#include "ui_dialogloginuseradd.h"
|
|
|
|
#include <QMessageBox>
|
|
|
|
#include "mainwindow.h"
|
|
|
|
DialogLoginUserAdd::DialogLoginUserAdd(QWidget *parent) :
|
|
QDialog(parent),
|
|
ui(new Ui::DialogLoginUserAdd)
|
|
{
|
|
setWindowFlags(Qt::FramelessWindowHint | Qt::Dialog | Qt::Popup);
|
|
|
|
ui->setupUi(this);
|
|
|
|
ui->lineEdit_Password->setEchoMode(QLineEdit::Password);
|
|
ui->lineEdit_Password_Confirm->setEchoMode(QLineEdit::Password);
|
|
|
|
ui->label_Password_Check->setVisible(false);
|
|
|
|
ui->lineEdit_ID->setFocus();
|
|
}
|
|
|
|
DialogLoginUserAdd::~DialogLoginUserAdd()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
void DialogLoginUserAdd::on_pushButton_OK_clicked()
|
|
{
|
|
QString strID = ui->lineEdit_ID->text();
|
|
QString strPassword = ui->lineEdit_Password->text();
|
|
QString strPasswordConfirm = ui->lineEdit_Password_Confirm->text();
|
|
|
|
if(strPassword!=strPasswordConfirm)
|
|
{
|
|
ui->label_Password_Check->setVisible(true);
|
|
}
|
|
else
|
|
{
|
|
ui->label_Password_Check->setVisible(false);
|
|
|
|
bool bSuccess = false;
|
|
// 1. 이 작업을 위한 지역 DB 인스턴스를 생성합니다.
|
|
SUTIL::SDatabase db(QString("AddUser_%1").arg(reinterpret_cast<quintptr>(this)));
|
|
if (db.OpenDatabase("/home/birdhead/test.db") == 0) // 0이 성공
|
|
{
|
|
// 2. 파라미터 바인딩을 사용하여 SQL Injection을 완벽하게 방어합니다.
|
|
QString query = "INSERT INTO LoginUser (LoginID, LoginPassword) VALUES (?, ?);";
|
|
|
|
QVariantList params;
|
|
params << strID << strPassword;
|
|
|
|
// 3. ExecuteNonQuery의 반환 값(bool)을 확인하여 작업 성공 여부를 판단합니다.
|
|
if (db.ExecuteNonQuery(query, params)) {
|
|
bSuccess = true;
|
|
} else {
|
|
// INSERT 실패 시 (예: 동일한 ID가 이미 존재할 경우) 사용자에게 오류를 알립니다.
|
|
QMessageBox::warning(this, "Creation Failed", "Failed to add new user.\nThe ID might already exist.");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
QMessageBox::critical(this, "Database Error", "Could not connect to the database.");
|
|
}
|
|
|
|
// 4. 데이터베이스 작업이 성공했을 때만 다이얼로그를 닫습니다.
|
|
if (bSuccess)
|
|
{
|
|
done(QDialog::Accepted);
|
|
}
|
|
}
|
|
}
|
|
|
|
void DialogLoginUserAdd::on_pushButton_Cancel_clicked()
|
|
{
|
|
done(QDialog::Rejected);
|
|
}
|