summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Ancell <robert.ancell@canonical.com>2017-12-13 15:27:47 +1300
committerRobert Ancell <robert.ancell@canonical.com>2018-01-19 16:17:55 +1300
commitc3ae81a5b3bd4f62912dca39b6b9849dd38dc600 (patch)
treee6fc7eaf14565178e69f696d3fad36bec832b607
parent74f4447b38e33dafbdd08a72368280d3f0193c48 (diff)
downloadgnome-shell-wip/rancell/guest.tar.gz
Show a guest login promptwip/rancell/guest
-rw-r--r--js/gdm/loginDialog.js37
-rw-r--r--js/gdm/util.js16
2 files changed, 52 insertions, 1 deletions
diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js
index 1cae3db85..36554e5bc 100644
--- a/js/gdm/loginDialog.js
+++ b/js/gdm/loginDialog.js
@@ -402,6 +402,40 @@ var SessionMenuButton = new Lang.Class({
});
Signals.addSignalMethods(SessionMenuButton.prototype);
+var GuestUser = new Lang.Class({
+ Name: 'GuestUser',
+
+ _init: function() {
+ this.is_loaded = true;
+ this.locked = false;
+ },
+
+ connect: function() {
+ },
+ disconnect: function() {
+ },
+
+ is_system_account: function() {
+ return false;
+ },
+
+ get_icon_file: function() {
+ return null; // FIXME: Use an icon for guest?
+ },
+
+ get_real_name: function() {
+ return 'Guest'; // FIXME: Translatable
+ },
+
+ get_user_name: function() {
+ return '*guest'; // FIXME: No a real username...
+ },
+
+ is_logged_in: function() {
+ return false; // FIXME: Can be logged in..
+ }
+});
+
var LoginDialog = new Lang.Class({
Name: 'LoginDialog',
@@ -446,6 +480,8 @@ var LoginDialog = new Lang.Class({
x_fill: true,
y_fill: true });
+ this._guestUser = new GuestUser();
+
this._authPrompt = new AuthPrompt.AuthPrompt(this._gdmClient, AuthPrompt.AuthPromptMode.UNLOCK_OR_LOG_IN);
this._authPrompt.connect('prompted', Lang.bind(this, this._onPrompted));
this._authPrompt.connect('reset', Lang.bind(this, this._onReset));
@@ -1204,6 +1240,7 @@ var LoginDialog = new Lang.Class({
for (let i = 0; i < users.length; i++) {
this._userList.addUser(users[i]);
}
+ this._userList.addUser(this._guestUser);
this._updateDisableUserList();
diff --git a/js/gdm/util.js b/js/gdm/util.js
index b594da4fd..e144fce75 100644
--- a/js/gdm/util.js
+++ b/js/gdm/util.js
@@ -423,7 +423,21 @@ var ShellUserVerifier = new Lang.Class({
_startService: function(serviceName) {
this._hold.acquire();
- if (this._userName) {
+ if (this._userName == "*guest") {
+ this._userVerifier.call_begin_verification_for_guest(this._cancellable,
+ Lang.bind(this, function(obj, result) {
+ try {
+ obj.call_begin_verification_for_guest_finish(result);
+ } catch(e if e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.CANCELLED)) {
+ return;
+ } catch(e) {
+ this._reportInitError('Failed to start verification for guest', e);
+ return;
+ }
+
+ this._hold.release();
+ }));
+ } else if (this._userName) {
this._userVerifier.call_begin_verification_for_user(serviceName,
this._userName,
this._cancellable,