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



commit 2c62b0a8ba79b337335562d8987ffd247c853aa5
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 |   21 +++++++++++++++++++++
 js/gdm/util.js        |   16 +++++++++++++++-
 2 files changed, 36 insertions(+), 1 deletions(-)
---
diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js
index 1cae3db..8828b32 100644
--- a/js/gdm/loginDialog.js
+++ b/js/gdm/loginDialog.js
@@ -402,6 +402,25 @@ var SessionMenuButton = new Lang.Class({
 });
 Signals.addSignalMethods(SessionMenuButton.prototype);
 
+var GuestUser = new Lang.Class({
+    Name: 'GuestUser',
+
+    _init: function() {
+    },
+
+    get_icon_file: function() {
+        return null; // FIXME
+    },
+
+    get_real_name: function() {
+        return 'Guest';
+    },
+
+    get_user_name: function() {
+        return '*guest';
+    }
+});
+
 var LoginDialog = new Lang.Class({
     Name: 'LoginDialog',
 
@@ -1204,6 +1223,8 @@ var LoginDialog = new Lang.Class({
         for (let i = 0; i < users.length; i++) {
             this._userList.addUser(users[i]);
         }
+        let guestUser = new GuestUser();
+        this._userList.addUser(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]