diff --git a/js/gdm/util.js b/js/gdm/util.js index 2e99352..6e940d2 100644 --- a/js/gdm/util.js +++ b/js/gdm/util.js @@ -126,7 +126,6 @@ var ShellUserVerifier = class { this._settings = new Gio.Settings({ schema_id: LOGIN_SCREEN_SCHEMA }); this._settings.connect('changed', this._updateDefaultService.bind(this)); - this._updateDefaultService(); this._fprintManager = Fprint.FprintManager(); this._smartcardManager = SmartcardManager.getSmartcardManager(); @@ -138,6 +137,8 @@ var ShellUserVerifier = class { this.smartcardDetected = false; this._checkForSmartcard(); + this._updateDefaultService(); + this._smartcardInsertedId = this._smartcardManager.connect('smartcard-inserted', this._checkForSmartcard.bind(this)); this._smartcardRemovedId = this._smartcardManager.connect('smartcard-removed', @@ -326,6 +327,8 @@ var ShellUserVerifier = class { else if (this._preemptingService == SMARTCARD_SERVICE_NAME) this._preemptingService = null; + this._updateDefaultService(); + this.emit('smartcard-status-changed'); } } @@ -407,7 +410,9 @@ var ShellUserVerifier = class { } _updateDefaultService() { - if (this._settings.get_boolean(PASSWORD_AUTHENTICATION_KEY)) + if (this._smartcardManager.loggedInWithToken()) + this._defaultService = SMARTCARD_SERVICE_NAME; + else if (this._settings.get_boolean(PASSWORD_AUTHENTICATION_KEY)) this._defaultService = PASSWORD_SERVICE_NAME; else if (this._settings.get_boolean(SMARTCARD_AUTHENTICATION_KEY)) this._defaultService = SMARTCARD_SERVICE_NAME; diff --git a/js/misc/smartcardManager.js b/js/misc/smartcardManager.js index fda782d..bb43c96 100644 --- a/js/misc/smartcardManager.js +++ b/js/misc/smartcardManager.js @@ -112,5 +112,12 @@ var SmartcardManager = class { return true; } + loggedInWithToken() { + if (this._loginToken) + return true; + + return false; + } + }; Signals.addSignalMethods(SmartcardManager.prototype);