diff --git a/DataBaseLMS/databaselms.cpp b/DataBaseLMS/databaselms.cpp index eb0bf78..7fef49c 100644 --- a/DataBaseLMS/databaselms.cpp +++ b/DataBaseLMS/databaselms.cpp @@ -13,6 +13,8 @@ const QString DataBaseLMS::TypeUserDBTrainee = "trainee"; DataBaseLMS::DataBaseLMS(QWidget *ownerWidget, QObject *parent): QObject(parent), db(nullptr), + UserNamePostgres(""), + PasswordPostgres(""), ownerWidget(ownerWidget) { diff --git a/DataBaseLMS/databaselms.h b/DataBaseLMS/databaselms.h index cc384ec..e779e34 100644 --- a/DataBaseLMS/databaselms.h +++ b/DataBaseLMS/databaselms.h @@ -41,12 +41,12 @@ public: public: //PostgreSQL + bool setUserPasswordPostgres(QString userName, QString password); bool checkDriverQPSQLavailable(); bool checkUserLMSexist(); bool checkDataBaseLMSexist(); - - bool createUser(QString name); - bool createDB(QString name); + bool createUser(); + bool createDB(); protected: //Подключение @@ -126,6 +126,10 @@ private: protected: QSqlDatabase* db; DataBaseSettings dbSettings; + + QString UserNamePostgres; + QString PasswordPostgres; + QTranslator qtLanguageTranslator; private: diff --git a/DataBaseLMS/databaselms_Postgresql.cpp b/DataBaseLMS/databaselms_Postgresql.cpp index 7b9c9ea..fdf5c3d 100644 --- a/DataBaseLMS/databaselms_Postgresql.cpp +++ b/DataBaseLMS/databaselms_Postgresql.cpp @@ -7,6 +7,31 @@ #include #include +bool DataBaseLMS::setUserPasswordPostgres(QString userName, QString password) +{ + DataBaseSettings settings = getDataBaseSettings(); + QSqlDatabase dbCheck = QSqlDatabase::addDatabase("QPSQL"); + + dbCheck.setUserName(userName); + dbCheck.setPassword(password); + dbCheck.setHostName(settings.dbHostName); + dbCheck.setPort(settings.dbPort); + + if (dbCheck.open()) + { + UserNamePostgres = userName; + PasswordPostgres = password; + + dbCheck.close(); + return true; + } + else + { + qDebug() << "PostgreSQL connection error."; + return false; + } +} + bool DataBaseLMS::checkDriverQPSQLavailable() { return QSqlDatabase::isDriverAvailable("QPSQL"); @@ -17,8 +42,8 @@ bool DataBaseLMS::checkUserLMSexist() DataBaseSettings settings = getDataBaseSettings(); QSqlDatabase dbCheck = QSqlDatabase::addDatabase("QPSQL"); - dbCheck.setUserName("postgres"); - dbCheck.setPassword("12345678"); + dbCheck.setUserName(UserNamePostgres); + dbCheck.setPassword(PasswordPostgres); dbCheck.setHostName(settings.dbHostName); dbCheck.setPort(settings.dbPort); @@ -53,8 +78,8 @@ bool DataBaseLMS::checkDataBaseLMSexist() bool flDBexist = false; - dbCheck.setUserName("postgres"); - dbCheck.setPassword("12345678"); + dbCheck.setUserName(UserNamePostgres); + dbCheck.setPassword(PasswordPostgres); dbCheck.setHostName(settings.dbHostName); dbCheck.setPort(settings.dbPort); @@ -85,13 +110,13 @@ bool DataBaseLMS::checkDataBaseLMSexist() return flDBexist; } -bool DataBaseLMS::createUser(QString name) +bool DataBaseLMS::createUser() { DataBaseSettings settings = getDataBaseSettings(); QSqlDatabase dbCheck = QSqlDatabase::addDatabase("QPSQL"); - dbCheck.setUserName("postgres"); - dbCheck.setPassword("12345678"); + dbCheck.setUserName(UserNamePostgres); + dbCheck.setPassword(PasswordPostgres); dbCheck.setHostName(settings.dbHostName); dbCheck.setPort(settings.dbPort); @@ -118,13 +143,13 @@ bool DataBaseLMS::createUser(QString name) } } -bool DataBaseLMS::createDB(QString name) +bool DataBaseLMS::createDB() { DataBaseSettings settings = getDataBaseSettings(); QSqlDatabase dbCheck = QSqlDatabase::addDatabase("QPSQL"); - dbCheck.setUserName("postgres"); - dbCheck.setPassword("12345678"); + dbCheck.setUserName(UserNamePostgres); + dbCheck.setPassword(PasswordPostgres); dbCheck.setHostName(settings.dbHostName); dbCheck.setPort(settings.dbPort); @@ -164,7 +189,7 @@ bool DataBaseLMS::createDB(QString name) QSqlQuery query = QSqlQuery(dbCheck); if(queryExec(queryStr, &query)) { - + qDebug() << "The owner of database has been changed."; } else return false; @@ -185,8 +210,8 @@ bool DataBaseLMS::createDB(QString name) QSqlDatabase dbCheck2 = QSqlDatabase::addDatabase("QPSQL"); - dbCheck2.setUserName("postgres"); - dbCheck2.setPassword("12345678"); + dbCheck.setUserName(UserNamePostgres); + dbCheck.setPassword(PasswordPostgres); dbCheck2.setHostName(settings.dbHostName); dbCheck2.setPort(settings.dbPort); dbCheck2.setDatabaseName(settings.dbName); @@ -202,15 +227,16 @@ bool DataBaseLMS::createDB(QString name) while (query.next()) { QString tableName = query.value(0).toString(); - QString alterQuery = QString("ALTER TABLE %1 OWNER TO %2;").arg(tableName).arg(newOwner); + QString alterQueryStr = QString("ALTER TABLE %1 OWNER TO %2;").arg(tableName).arg(newOwner); + QSqlQuery alterQuery(dbCheck2); - dbCheck2.exec(alterQuery); - /* - if (dbCheck2.exec(alterQuery)) + //dbCheck2.exec(alterQueryStr); + + if(!queryExec(alterQueryStr, &alterQuery)) { qDebug() << "Error changing owner for table " << tableName << ":" << dbCheck2.lastError().text(); return false; - }*/ + } } } diff --git a/ServerLMS/dialogcheckdb.cpp b/ServerLMS/dialogcheckdb.cpp index f28a834..7ba4464 100644 --- a/ServerLMS/dialogcheckdb.cpp +++ b/ServerLMS/dialogcheckdb.cpp @@ -77,13 +77,13 @@ void DialogCheckDB::on_btnRepare_clicked() { if(!resDriver) { - QMessageBox::warning(this, tr("Warning!"), tr("Install PostgreSQL.")); + QMessageBox::critical(this, tr("Error!"), tr("Install PostgreSQL.")); return; } if(!resUser) { - if(!providerDBLMS->createUser("nameUser")) + if(!providerDBLMS->createUser()) { QMessageBox::critical(this, tr("Error!"), tr("Failed to create user!")); return; @@ -92,22 +92,10 @@ void DialogCheckDB::on_btnRepare_clicked() if(!resDB) { - if(!providerDBLMS->createDB("nameDB")) + if(!providerDBLMS->createDB()) { QMessageBox::critical(this, tr("Error!"), tr("Failed to create Database!")); return; } } } - -void DialogCheckDB::on_toolButton_clicked() -{ - QProcess process; - QString program = "cmd.exe"; - QStringList arguments; - arguments << "/C" << "echo Hello from QProcess" << "&&" << "pause"; - process.start(program, arguments); - process.waitForFinished(); - - int i = 0; -} diff --git a/ServerLMS/dialogcheckdb.h b/ServerLMS/dialogcheckdb.h index 43252bd..1342724 100644 --- a/ServerLMS/dialogcheckdb.h +++ b/ServerLMS/dialogcheckdb.h @@ -19,8 +19,6 @@ public: private slots: void on_btnRepare_clicked(); - void on_toolButton_clicked(); - private: void check(); diff --git a/ServerLMS/dialogsettingstray.cpp b/ServerLMS/dialogsettingstray.cpp index bee4fc0..4892ae9 100644 --- a/ServerLMS/dialogsettingstray.cpp +++ b/ServerLMS/dialogsettingstray.cpp @@ -1,4 +1,5 @@ #include +#include #include "dialogsettingstray.h" #include "Systems/tools.h" #include "ui_dialogsettingstray.h" @@ -240,16 +241,39 @@ void DialogSettingsTray::on_editPassword_textChanged(const QString &arg1) void DialogSettingsTray::on_btnCheckDB_clicked() { - DialogCheckDB dlgCheckDB(providerDBLMS, this); - dlgCheckDB.setWindowFlags(dlgCheckDB.windowFlags() & ~Qt::WindowContextHelpButtonHint); - - switch( dlgCheckDB.exec() ) + //Проверяем, установлен ли PostgreSQL + if(!providerDBLMS->checkDriverQPSQLavailable()) { - case QDialog::Accepted: - break; - case QDialog::Rejected: - break; - default: - break; + QMessageBox::critical(this, tr("Error!"), tr("Driver PostgreSQL is not installed!")); + return; + } + + //TODO Запрос Логина и Пароля Суперюзера PostgreSQL (postgres) + QString UserNamePostgres; + QString PasswordPostgres; + + //Имитация + UserNamePostgres = "postgres"; + PasswordPostgres = "12345678"; + + if(providerDBLMS->setUserPasswordPostgres(UserNamePostgres, PasswordPostgres)) + { + DialogCheckDB dlgCheckDB(providerDBLMS, this); + dlgCheckDB.setWindowFlags(dlgCheckDB.windowFlags() & ~Qt::WindowContextHelpButtonHint); + + switch( dlgCheckDB.exec() ) + { + case QDialog::Accepted: + break; + case QDialog::Rejected: + break; + default: + break; + } + } + else + { + QMessageBox::critical(this, tr("Error!"), tr("The superuser login or password is incorrect!")); + return; } } diff --git a/ServerLMS/providerdblms.cpp b/ServerLMS/providerdblms.cpp index c34bd4d..12486e7 100644 --- a/ServerLMS/providerdblms.cpp +++ b/ServerLMS/providerdblms.cpp @@ -64,6 +64,11 @@ DataBaseSettings ProviderDBLMS::getDBSettings() return dbLMS->getDataBaseSettings(); } +bool ProviderDBLMS::setUserPasswordPostgres(QString userName, QString password) +{ + return dbLMS->setUserPasswordPostgres(userName, password); +} + bool ProviderDBLMS::checkDriverQPSQLavailable() { return dbLMS->checkDriverQPSQLavailable(); @@ -79,14 +84,14 @@ bool ProviderDBLMS::checkDataBaseLMSexist() return dbLMS->checkDataBaseLMSexist(); } -bool ProviderDBLMS::createUser(QString name) +bool ProviderDBLMS::createUser() { - return dbLMS->createUser(name); + return dbLMS->createUser(); } -bool ProviderDBLMS::createDB(QString name) +bool ProviderDBLMS::createDB() { - return dbLMS->createDB(name); + return dbLMS->createDB(); } QString ProviderDBLMS::getMainInstructorName() diff --git a/ServerLMS/providerdblms.h b/ServerLMS/providerdblms.h index d2821b2..3abe9e3 100644 --- a/ServerLMS/providerdblms.h +++ b/ServerLMS/providerdblms.h @@ -81,12 +81,13 @@ public: DataBaseSettings getDBSettings(); //PostgreSQL + bool setUserPasswordPostgres(QString userName, QString password); bool checkDriverQPSQLavailable(); bool checkUserLMSexist(); bool checkDataBaseLMSexist(); - bool createUser(QString name); - bool createDB(QString name); + bool createUser(); + bool createDB(); private: InterfaceDataBaseLMS* dbLMS;