summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaércio de Sousa <lbsousajr@gmail.com>2015-04-27 07:49:08 -0300
committerLaércio de Sousa <lbsousajr@gmail.com>2015-04-27 07:49:08 -0300
commitc4a6edd5988f546ddd206b8187838093612eab37 (patch)
tree31b8caf1e78a1378c080945eab717427d496be91
parentb81bc38113c5452bd863b5e817107f00196aa619 (diff)
downloadlightdm-gtk-greeter-git-c4a6edd5988f546ddd206b8187838093612eab37.tar.gz
Avoid authenticating same use twice on timed autologin.
-rw-r--r--src/lightdm-gtk-greeter.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/lightdm-gtk-greeter.c b/src/lightdm-gtk-greeter.c
index c701639..d1025d2 100644
--- a/src/lightdm-gtk-greeter.c
+++ b/src/lightdm-gtk-greeter.c
@@ -2305,10 +2305,26 @@ show_message_cb (LightDMGreeter *greeter, const gchar *text, LightDMMessageType
}
static void
-autologin_cb (LightDMGreeter *greeter)
+timed_autologin_cb (LightDMGreeter *greeter)
{
- prompted = TRUE;
- lightdm_greeter_authenticate_autologin (greeter);
+ if (lightdm_greeter_get_is_authenticated (greeter))
+ {
+ /* Configured autologin user may be already selected in user list. */
+ if (lightdm_greeter_get_authentication_user (greeter))
+ /* Selected user matches configured autologin-user option. */
+ start_session ();
+ else if (lightdm_greeter_get_autologin_guest_hint (greeter))
+ /* "Guest session" is selected and autologin-guest is enabled. */
+ start_session ();
+ else if (lightdm_greeter_get_autologin_user_hint (greeter))
+ {
+ /* "Guest session" is selected, but autologin-user is configured. */
+ prompted = TRUE;
+ start_authentication (lightdm_greeter_get_autologin_user_hint (greeter));
+ }
+ }
+ else
+ lightdm_greeter_authenticate_autologin (greeter);
}
static void
@@ -2685,7 +2701,7 @@ main (int argc, char **argv)
g_signal_connect (greeter, "show-prompt", G_CALLBACK (show_prompt_cb), NULL);
g_signal_connect (greeter, "show-message", G_CALLBACK (show_message_cb), NULL);
g_signal_connect (greeter, "authentication-complete", G_CALLBACK (authentication_complete_cb), NULL);
- g_signal_connect (greeter, "autologin-timer-expired", G_CALLBACK (autologin_cb), NULL);
+ g_signal_connect (greeter, "autologin-timer-expired", G_CALLBACK (timed_autologin_cb), NULL);
if (!lightdm_greeter_connect_sync (greeter, NULL))
return EXIT_FAILURE;