diff --git a/src/murmur/ServerDB.cpp b/src/murmur/ServerDB.cpp index 8ae4f293e..150b3f408 100644 --- a/src/murmur/ServerDB.cpp +++ b/src/murmur/ServerDB.cpp @@ -984,10 +984,22 @@ void ServerDB::setSUPW(int srvnum, const QString &pw) { TransactionHolder th; QCryptographicHash hash(QCryptographicHash::Sha1); - hash.addData(pw.toUtf8()); QSqlQuery &query = *th.qsqQuery; + + SQLPREP("SELECT `user_id` FROM `%1users` WHERE `server_id` = ? AND `user_id` = ?"); + query.addBindValue(srvnum); + query.addBindValue(0); + SQLEXEC(); + if (! query.next()) { + SQLPREP("INSERT INTO `%1users` (`server_id`, `user_id`, `name`) VALUES (?, ?, ?)"); + query.addBindValue(srvnum); + query.addBindValue(0); + query.addBindValue(QLatin1String("SuperUser")); + SQLEXEC(); + } + SQLPREP("UPDATE `%1users` SET `pw`=? WHERE `server_id` = ? AND `user_id`=?"); query.addBindValue(QString::fromLatin1(hash.result().toHex())); query.addBindValue(srvnum);