diff options
author | Robert Ancell <robert.ancell@canonical.com> | 2011-10-18 13:30:11 +1100 |
---|---|---|
committer | Robert Ancell <robert.ancell@canonical.com> | 2011-10-18 13:30:11 +1100 |
commit | 6415ddbb9332ebde1f7ba264d9389ef9e2d464f2 (patch) | |
tree | d069325190eec811af639685c29b604cc6d2783a | |
parent | 915e4081b85aaba8a05f9b390eec4e6b8dda8666 (diff) | |
download | lightdm-git-6415ddbb9332ebde1f7ba264d9389ef9e2d464f2.tar.gz |
Use previous session for automatic login or if greeter does not request one.
-rw-r--r-- | NEWS | 3 | ||||
-rw-r--r-- | src/display.c | 9 | ||||
-rw-r--r-- | tests/Makefile.am | 6 | ||||
-rw-r--r-- | tests/scripts/login-manual-previous-session.conf | 42 | ||||
-rw-r--r-- | tests/scripts/login-previous-session.conf | 39 | ||||
-rwxr-xr-x | tests/test-login-gobject-manual-previous-session | 2 | ||||
-rwxr-xr-x | tests/test-login-gobject-previous-session | 2 | ||||
-rwxr-xr-x | tests/test-login-qt-manual-previous-session | 2 | ||||
-rwxr-xr-x | tests/test-login-qt-previous-session | 2 |
9 files changed, 106 insertions, 1 deletions
@@ -2,7 +2,8 @@ Overview of changes in lightdm 1.0.4 * Fix --enable-gtk-greeter=yes not working * Fix X sessions with arguments in Exec not working - * Use previous session for automatic login users + * Use previous session for automatic login or if greeter does not request + one. * Correct ownership of ~/.Xauthority if upgrading from buggy version of LightDM that had it root owned. diff --git a/src/display.c b/src/display.c index 2dbfd2da..2fc88fad 100644 --- a/src/display.c +++ b/src/display.c @@ -545,6 +545,15 @@ greeter_start_authentication_cb (Greeter *greeter, const gchar *username, Displa static gboolean greeter_start_session_cb (Greeter *greeter, const gchar *session_name, Display *display) { + /* If no session requested, use the previous one */ + if (!session_name && !greeter_get_guest_authenticated (greeter)) + { + User *user; + + user = pam_session_get_user (greeter_get_authentication (greeter)); + session_name = user_get_xsession (user); + } + /* If a session was requested, override the default */ if (session_name) { diff --git a/tests/Makefile.am b/tests/Makefile.am index 8bd6d098..914ff763 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -19,8 +19,10 @@ TESTS = \ test-autologin-guest-logout \ test-login-gobject \ test-login-gobject-manual \ + test-login-gobject-manual-previous-session \ test-login-gobject-no-password \ test-login-gobject-pick-session \ + test-login-gobject-previous-session \ test-login-gobject-wrong-password \ test-login-gobject-invalid-user \ test-login-gobject-invalid-session \ @@ -53,7 +55,9 @@ if COMPILE_LIBLIGHTDM_QT TESTS += \ test-login-qt \ test-login-qt-manual \ + test-login-qt-manual-previous-session \ test-login-qt-no-password \ + test-login-qt-previous-session \ test-login-qt-wrong-password \ test-login-qt-invalid-user \ test-login-qt-invalid-session \ @@ -97,7 +101,9 @@ EXTRA_DIST = \ scripts/login-invalid-user.conf \ scripts/login-logout.conf \ scripts/login-manual.conf \ + scripts/login-manual-previous-session.conf \ scripts/login-no-password.conf \ + scripts/login-previous-session.conf \ scripts/login-session-crash.conf \ scripts/login-wrong-password.conf \ scripts/login-xserver-crash.conf \ diff --git a/tests/scripts/login-manual-previous-session.conf b/tests/scripts/login-manual-previous-session.conf new file mode 100644 index 00000000..5b4cc3fa --- /dev/null +++ b/tests/scripts/login-manual-previous-session.conf @@ -0,0 +1,42 @@ +# +# Check when logging in manually the previous session is restored +# + +[test-greeter-config] +prompt-username=true +username=carol + +#?RUNNER DAEMON-START + +# X server starts +#?XSERVER :50 START +#?XSERVER :50 INDICATE-READY + +# LightDM connects to X server +#?XSERVER :50 ACCEPT-CONNECT + +# Greeter starts +#?GREETER START +#?XSERVER :50 ACCEPT-CONNECT +#?GREETER CONNECT-XSERVER :50 +#?GREETER CONNECT-TO-DAEMON +#?GREETER CONNECTED-TO-DAEMON + +# Login as carol, but let lightdm prompt for a username +#?GREETER AUTHENTICATE +#?GREETER SHOW-PROMPT TEXT="login:" +#?GREETER RESPOND TEXT="carol" +#?GREETER AUTHENTICATION-COMPLETE USERNAME=carol AUTHENTICATED=TRUE +#?GREETER TERMINATE SIGNAL=15 + +# Session starts +#?SESSION START NAME=alternative USER=carol +#?XSERVER :50 ACCEPT-CONNECT +#?SESSION CONNECT-XSERVER + +# Cleanup +#?*STOP-DAEMON +# Don't know what order they will terminate +#?(SESSION TERMINATE SIGNAL=15|XSERVER :50 TERMINATE SIGNAL=15) +#?(SESSION TERMINATE SIGNAL=15|XSERVER :50 TERMINATE SIGNAL=15) +#?RUNNER DAEMON-EXIT STATUS=0 diff --git a/tests/scripts/login-previous-session.conf b/tests/scripts/login-previous-session.conf new file mode 100644 index 00000000..1a5f8e15 --- /dev/null +++ b/tests/scripts/login-previous-session.conf @@ -0,0 +1,39 @@ +# +# Check when logging in the previous session is loaded +# + +[test-greeter-config] +username=carol + +#?RUNNER DAEMON-START + +# X server starts +#?XSERVER :50 START +#?XSERVER :50 INDICATE-READY + +# LightDM connects to X server +#?XSERVER :50 ACCEPT-CONNECT + +# Greeter starts +#?GREETER START +#?XSERVER :50 ACCEPT-CONNECT +#?GREETER CONNECT-XSERVER :50 +#?GREETER CONNECT-TO-DAEMON +#?GREETER CONNECTED-TO-DAEMON + +# Login as carol +#?GREETER AUTHENTICATE USERNAME=carol +#?GREETER AUTHENTICATION-COMPLETE USERNAME=carol AUTHENTICATED=TRUE +#?GREETER TERMINATE SIGNAL=15 + +# Session starts +#?SESSION START NAME=alternative USER=carol +#?XSERVER :50 ACCEPT-CONNECT +#?SESSION CONNECT-XSERVER + +# Cleanup +#?*STOP-DAEMON +# Don't know what order they will terminate +#?(SESSION TERMINATE SIGNAL=15|XSERVER :50 TERMINATE SIGNAL=15) +#?(SESSION TERMINATE SIGNAL=15|XSERVER :50 TERMINATE SIGNAL=15) +#?RUNNER DAEMON-EXIT STATUS=0 diff --git a/tests/test-login-gobject-manual-previous-session b/tests/test-login-gobject-manual-previous-session new file mode 100755 index 00000000..61e2e065 --- /dev/null +++ b/tests/test-login-gobject-manual-previous-session @@ -0,0 +1,2 @@ +#!/bin/sh +./src/test-runner login-manual-previous-session test-gobject-greeter diff --git a/tests/test-login-gobject-previous-session b/tests/test-login-gobject-previous-session new file mode 100755 index 00000000..3ebcb6ee --- /dev/null +++ b/tests/test-login-gobject-previous-session @@ -0,0 +1,2 @@ +#!/bin/sh +./src/test-runner login-previous-session test-gobject-greeter diff --git a/tests/test-login-qt-manual-previous-session b/tests/test-login-qt-manual-previous-session new file mode 100755 index 00000000..d5fcc5cf --- /dev/null +++ b/tests/test-login-qt-manual-previous-session @@ -0,0 +1,2 @@ +#!/bin/sh +./src/test-runner login-manual-previous-session test-qt-greeter diff --git a/tests/test-login-qt-previous-session b/tests/test-login-qt-previous-session new file mode 100755 index 00000000..395892ac --- /dev/null +++ b/tests/test-login-qt-previous-session @@ -0,0 +1,2 @@ +#!/bin/sh +./src/test-runner login-previous-session test-qt-greeter |