HttpCreds: Add keychain failure hint. #3268

This commit is contained in:
Christian Kamm 2015-07-17 14:39:43 +02:00
parent 44870fae9f
commit 5d9e752c71
5 changed files with 26 additions and 12 deletions

View file

@ -114,7 +114,7 @@ public:
_sslTrusted(false)
{}
QString queryPassword(bool *ok) Q_DECL_OVERRIDE {
QString queryPassword(bool *ok, const QString&) Q_DECL_OVERRIDE {
if (ok) {
*ok = true;
}

View file

@ -23,17 +23,24 @@ using namespace QKeychain;
namespace OCC
{
QString HttpCredentialsGui::queryPassword(bool *ok)
QString HttpCredentialsGui::queryPassword(bool *ok, const QString& hint)
{
if (ok) {
QString str = QInputDialog::getText(0, tr("Enter Password"),
tr("Please enter %1 password:\n\nUser: %2\nAccount: %3\n")
.arg(Theme::instance()->appNameGUI(), _user, _account->displayName()),
QLineEdit::Password, _previousPassword, ok);
return str;
} else {
if (!ok) {
return QString();
}
QString msg = tr("Please enter %1 password:\n"
"\n"
"User: %2\n"
"Account: %3\n")
.arg(Theme::instance()->appNameGUI(), _user, _account->displayName());
if (!hint.isEmpty()) {
msg += QLatin1String("\n") + hint + QLatin1String("\n");
}
return QInputDialog::getText(0, tr("Enter Password"), msg,
QLineEdit::Password, _previousPassword,
ok);
}
} // namespace OCC

View file

@ -28,7 +28,7 @@ class HttpCredentialsGui : public HttpCredentials {
public:
explicit HttpCredentialsGui() : HttpCredentials() {}
HttpCredentialsGui(const QString& user, const QString& password, const QString& certificatePath, const QString& certificatePasswd) : HttpCredentials(user, password, certificatePath, certificatePasswd) {}
QString queryPassword(bool *ok) Q_DECL_OVERRIDE;
QString queryPassword(bool *ok, const QString& hint) Q_DECL_OVERRIDE;
};
} // namespace OCC

View file

@ -284,8 +284,15 @@ void HttpCredentials::slotReadJobDone(QKeychain::Job *job)
// NOT persisted into the new account.
} else {
// interactive password dialog starts here
QString hint;
if (job->error() != EntryNotFound) {
hint = tr("Reading from keychain failed with error: '%1'").arg(
job->errorString());
}
bool ok;
QString pwd = queryPassword(&ok);
QString pwd = queryPassword(&ok, hint);
_fetchJobInProgress = false;
if (ok) {
_password = pwd;

View file

@ -49,7 +49,7 @@ public:
void persist() Q_DECL_OVERRIDE;
QString user() const Q_DECL_OVERRIDE;
QString password() const;
virtual QString queryPassword(bool *ok) = 0;
virtual QString queryPassword(bool *ok, const QString& hint) = 0;
void invalidateToken() Q_DECL_OVERRIDE;
QString fetchUser();
virtual bool sslIsTrusted() { return false; }