summaryrefslogtreecommitdiffstats
path: root/tdm/kfrontend/kgreeter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tdm/kfrontend/kgreeter.cpp')
-rw-r--r--tdm/kfrontend/kgreeter.cpp19
1 files changed, 13 insertions, 6 deletions
diff --git a/tdm/kfrontend/kgreeter.cpp b/tdm/kfrontend/kgreeter.cpp
index e14e58491..3fdbc6042 100644
--- a/tdm/kfrontend/kgreeter.cpp
+++ b/tdm/kfrontend/kgreeter.cpp
@@ -869,6 +869,12 @@ void KGreeter::cryptographicCardInserted(TDECryptographicCardDevice* cdevice) {
}
if (login_name != "") {
+ if (verify->cardLoginInProgress) {
+ return;
+ }
+ verify->cardLoginInProgress = true;
+ verify->cardLoginDevice = cdevice;
+
DM dm;
SessList sess;
bool vt_active = false;
@@ -903,12 +909,10 @@ void KGreeter::cryptographicCardInserted(TDECryptographicCardDevice* cdevice) {
cardLoginUser = login_name;
verify->setPasswordPrompt(i18n("PIN:"));
- TQString autoPIN = cdevice->autoPIN();
- if (autoPIN != TQString::null) {
- // Initiate login
- verify->setPassword(autoPIN);
- verify->accept();
- }
+ // Bypass initial password prompt
+ verify->start();
+ verify->setPassword("");
+ verify->accept();
}
}
}
@@ -921,6 +925,9 @@ void KGreeter::cryptographicCardRemoved(TDECryptographicCardDevice* cdevice) {
// Restore information message display settings
verify->setInfoMessageDisplay(showInfoMessages);
+
+ verify->cardLoginInProgress = false;
+ verify->cardLoginDevice = NULL;
}
KStdGreeter::KStdGreeter()