[gnome-shell/wip/rancell/guest] Show a guest login prompt



commit 07baa02d28a8efd0116999b5bd773d58acc91592
Author: Robert Ancell <robert ancell canonical com>
Date:   Wed Dec 13 15:27:47 2017 +1300

    Show a guest login prompt

 js/gdm/loginDialog.js |   32 ++++++++++++++++++++++++++++++++
 js/gdm/util.js        |   16 +++++++++++++++-
 2 files changed, 47 insertions(+), 1 deletions(-)
---
diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js
index 1cae3db..3436d81 100644
--- a/js/gdm/loginDialog.js
+++ b/js/gdm/loginDialog.js
@@ -402,6 +402,35 @@ 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;
+    },
+
+    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 +475,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 +1235,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 b594da4..e144fce 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,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]