mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-04-27 07:48:01 -07:00
Simpler forgot password functionality (#2393)
* Simpler forgot password functionality (Server/Client)
This commit is contained in:
parent
b64eab204c
commit
0cfa6863d5
36 changed files with 1190 additions and 173 deletions
|
|
@ -252,6 +252,12 @@ bool Servatrice::initServer()
|
|||
}
|
||||
}
|
||||
|
||||
qDebug() << "Forgot password enabled: " << getEnableForgotPassword();
|
||||
if (getEnableForgotPassword()) {
|
||||
qDebug() << "Forgot password token life (in minutes): " << getForgotPasswordTokenLife();
|
||||
qDebug() << "Forgot password challenge on: " << getEnableForgotPasswordChallenge();
|
||||
}
|
||||
|
||||
if (getDBTypeString() == "mysql") {
|
||||
databaseType = DatabaseMySql;
|
||||
} else {
|
||||
|
|
@ -542,28 +548,51 @@ void Servatrice::statusUpdate()
|
|||
query->bindValue(":rx", rx);
|
||||
servatriceDatabaseInterface->execSqlQuery(query);
|
||||
|
||||
// send activation emails
|
||||
if (getRegistrationEnabled() && getRequireEmailActivationEnabled() && getEnableInternalSMTPClient())
|
||||
if (getRegistrationEnabled() && getEnableInternalSMTPClient())
|
||||
{
|
||||
QSqlQuery *query = servatriceDatabaseInterface->prepareQuery("select a.name, b.email, b.token from {prefix}_activation_emails a left join {prefix}_users b on a.name = b.name");
|
||||
if (!servatriceDatabaseInterface->execSqlQuery(query))
|
||||
return;
|
||||
if (getRequireEmailActivationEnabled())
|
||||
{
|
||||
QSqlQuery *query = servatriceDatabaseInterface->prepareQuery("select a.name, b.email, b.token from {prefix}_activation_emails a left join {prefix}_users b on a.name = b.name");
|
||||
if (!servatriceDatabaseInterface->execSqlQuery(query))
|
||||
return;
|
||||
|
||||
QSqlQuery *queryDelete = servatriceDatabaseInterface->prepareQuery("delete from {prefix}_activation_emails where name = :name");
|
||||
QSqlQuery *queryDelete = servatriceDatabaseInterface->prepareQuery("delete from {prefix}_activation_emails where name = :name");
|
||||
|
||||
while (query->next()) {
|
||||
const QString userName = query->value(0).toString();
|
||||
const QString emailAddress = query->value(1).toString();
|
||||
const QString token = query->value(2).toString();
|
||||
while (query->next()) {
|
||||
const QString userName = query->value(0).toString();
|
||||
const QString emailAddress = query->value(1).toString();
|
||||
const QString token = query->value(2).toString();
|
||||
|
||||
if(smtpClient->enqueueActivationTokenMail(userName, emailAddress, token))
|
||||
{
|
||||
queryDelete->bindValue(":name", userName);
|
||||
servatriceDatabaseInterface->execSqlQuery(queryDelete);
|
||||
}
|
||||
}
|
||||
if (smtpClient->enqueueActivationTokenMail(userName, emailAddress, token))
|
||||
{
|
||||
queryDelete->bindValue(":name", userName);
|
||||
servatriceDatabaseInterface->execSqlQuery(queryDelete);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
smtpClient->sendAllEmails();
|
||||
if (getEnableForgotPassword())
|
||||
{
|
||||
QSqlQuery *query = servatriceDatabaseInterface->prepareQuery("select a.name, b.email, b.token from {prefix}_forgot_password a left join {prefix}_users b on a.name = b.name where a.emailed = 0");
|
||||
if (!servatriceDatabaseInterface->execSqlQuery(query))
|
||||
return;
|
||||
|
||||
QSqlQuery *queryDelete = servatriceDatabaseInterface->prepareQuery("update {prefix}_forgot_password set emailed = 1 where name = :name");
|
||||
|
||||
while (query->next()) {
|
||||
const QString userName = query->value(0).toString();
|
||||
const QString emailAddress = query->value(1).toString();
|
||||
const QString token = query->value(2).toString();
|
||||
|
||||
if (smtpClient->enqueueForgotPasswordTokenMail(userName, emailAddress, token))
|
||||
{
|
||||
queryDelete->bindValue(":name", userName);
|
||||
servatriceDatabaseInterface->execSqlQuery(queryDelete);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
smtpClient->sendAllEmails();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -847,6 +876,18 @@ bool Servatrice::getEnableInternalSMTPClient() const {
|
|||
return settingsCache->value("smtp/enableinternalsmtpclient", true).toBool();
|
||||
}
|
||||
|
||||
bool Servatrice::getEnableForgotPassword() const {
|
||||
return settingsCache->value("forgotpassword/enable", false).toBool();
|
||||
}
|
||||
|
||||
int Servatrice::getForgotPasswordTokenLife() const {
|
||||
return settingsCache->value("forgotpassword/tokenlife", 60).toInt();
|
||||
}
|
||||
|
||||
bool Servatrice::getEnableForgotPasswordChallenge() const {
|
||||
return settingsCache->value("forgotpassword/enablechallenge", false).toBool();
|
||||
}
|
||||
|
||||
QString Servatrice::getEmailBlackList() const {
|
||||
return settingsCache->value("registration/emailproviderblacklist").toString();
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue