loginDialog: don't rely on PAM to ask for a username
For the "Not Listed?" case we will need to be able to identify when the user has entered their username. Once we have a way of tracking when the username is entered, we can then defer showing the session list too early, before the user can reliably pick a session. This username tracking will also be important for implementing a disable-user-list configuration key. If the config key gets toggled off at runtime, we'll need to know if we're at a disruptive part of the authentication process or not, so we know whether we can can expose the user list right away, or wait until the authentication conversation finishes. Right now, we pass null in for an initial username, and let the PAM machinery ask the user, which means we have no good way of knowing when the username is entered. This commit changes the "Not Listed?" code to ask the user their username up front, before starting the PAM conversation in much the same way we do if the user picks a user from the user list. https://bugzilla.gnome.org/show_bug.cgi?id=660660
This commit is contained in:
parent
980c3290de
commit
dcbdae85eb
@ -949,6 +949,23 @@ const LoginDialog = new Lang.Class({
|
||||
return batch.run();
|
||||
},
|
||||
|
||||
_askForUsernameAndLogIn: function() {
|
||||
this._promptLabel.set_text(_("Username: "));
|
||||
this._promptEntry.set_text('');
|
||||
this._promptEntry.clutter_text.set_password_char('');
|
||||
|
||||
let tasks = [this._showPrompt,
|
||||
|
||||
function() {
|
||||
let userName = this._promptEntry.get_text();
|
||||
this._promptEntry.reactive = false;
|
||||
return this._beginVerificationForUser(userName);
|
||||
}];
|
||||
|
||||
let batch = new Batch.ConsecutiveBatch(this, tasks);
|
||||
return batch.run();
|
||||
},
|
||||
|
||||
_onSessionOpened: function(client, serviceName) {
|
||||
this._greeter.call_start_session_when_ready_sync(serviceName, true, null);
|
||||
},
|
||||
@ -1095,10 +1112,7 @@ const LoginDialog = new Lang.Class({
|
||||
this._fadeOutLogo]),
|
||||
|
||||
function() {
|
||||
let hold = new Batch.Hold();
|
||||
|
||||
this._userVerifier.begin(null, hold);
|
||||
return hold;
|
||||
return this._askForUsernameAndLogIn();
|
||||
}];
|
||||
|
||||
let batch = new Batch.ConsecutiveBatch(this, tasks);
|
||||
|
Loading…
Reference in New Issue
Block a user