on xenial help sign in
Handle translated PAM prompts
2d0ed8eMichael Terry
plugins/LightDM/Greeter.cpp+4−1
@@ -17,6 +17,7 @@
17 */
17 */
18
18
19#include "Greeter.h"
19#include "Greeter.h"
20+#include <libintl.h>
20#include <QLightDM/Greeter>
21#include <QLightDM/Greeter>
21
22
22class GreeterPrivate
23class GreeterPrivate
@@ -125,13 +126,15 @@ void Greeter::showPromptFilter(const QString &text, QLightDM::Greeter::PromptTyp
125 Q_D(Greeter);
126 Q_D(Greeter);
126 d->wasPrompted = true;
127 d->wasPrompted = true;
127
128
129+ bool isDefaultPrompt = (text == dgettext("Linux-PAM", "Password: "));
130+
128 // Strip prompt of any colons at the end
131 // Strip prompt of any colons at the end
129 QString trimmedText = text.trimmed();
132 QString trimmedText = text.trimmed();
130 if (trimmedText.endsWith(":") || trimmedText.endsWith(":")) {
133 if (trimmedText.endsWith(":") || trimmedText.endsWith(":")) {
131 trimmedText.chop(1);
134 trimmedText.chop(1);
132 }
135 }
133
136
134− Q_EMIT showPrompt(trimmedText, type == QLightDM::Greeter::PromptTypeSecret);
137+ Q_EMIT showPrompt(trimmedText, type == QLightDM::Greeter::PromptTypeSecret, isDefaultPrompt);
135}
138}
136
139
137void Greeter::showMessageFilter(const QString &text, QLightDM::Greeter::MessageType type)
140void Greeter::showMessageFilter(const QString &text, QLightDM::Greeter::MessageType type)
plugins/LightDM/Greeter.h+1−1
@@ -55,7 +55,7 @@ public Q_SLOTS:
55
55
56Q_SIGNALS:
56Q_SIGNALS:
57 void showMessage(const QString &text, bool isError);
57 void showMessage(const QString &text, bool isError);
58− void showPrompt(const QString &text, bool isSecret);
58+ void showPrompt(const QString &text, bool isSecret, bool isDefaultPrompt);
59 void authenticationComplete();
59 void authenticationComplete();
60 void authenticationUserChanged(const QString &user);
60 void authenticationUserChanged(const QString &user);
61 void isActiveChanged();
61 void isActiveChanged();
qml/Shell.qml+1−1
@@ -391,7 +391,7 @@ Item {
391 onShowPrompt: {
391 onShowPrompt: {
392 if (greeter.narrowMode) {
392 if (greeter.narrowMode) {
393 var promptText = text.toLowerCase()
393 var promptText = text.toLowerCase()
394− if (promptText === "password") {
394+ if (isDefaultPrompt) {
395 promptText = lockscreen.alphaNumeric ?
395 promptText = lockscreen.alphaNumeric ?
396 i18n.tr("passphrase") : i18n.tr("passcode")
396 i18n.tr("passphrase") : i18n.tr("passcode")
397 }
397 }