#
# type = Seat type (xlocal, xremote)
# xdg-seat = Seat name to set pam_systemd XDG_SEAT variable and name to pass to X server
+# pam-service = PAM service to use for login
+# pam-autologin-service = PAM service to use for autologin
+# pam-greeter-service = PAM service to use for greeters
# xserver-command = X server command to run (can also contain arguments e.g. X -special-option)
# xserver-layout = Layout to pass to X server
# xserver-config = Config file to pass to X server
[SeatDefaults]
#type=xlocal
#xdg-seat=seat0
+#pam-service=lightdm
+#pam-autologin-service=lightdm-autologin
+#pam-greeter-service=lightdm-greeter
#xserver-command=X
#xserver-layout=
#xserver-config=
config_set_boolean (config_get_instance (), "LightDM", "lock-memory", TRUE);
if (!config_has_key (config_get_instance (), "SeatDefaults", "type"))
config_set_string (config_get_instance (), "SeatDefaults", "type", "xlocal");
+ if (!config_has_key (config_get_instance (), "SeatDefaults", "pam-service"))
+ config_set_string (config_get_instance (), "SeatDefaults", "pam-service", "lightdm");
+ if (!config_has_key (config_get_instance (), "SeatDefaults", "pam-autologin-service"))
+ config_set_string (config_get_instance (), "SeatDefaults", "pam-autologin-service", "lightdm-autologin");
+ if (!config_has_key (config_get_instance (), "SeatDefaults", "pam-greeter-service"))
+ config_set_string (config_get_instance (), "SeatDefaults", "pam-greeter-service", "lightdm-greeter");
if (!config_has_key (config_get_instance (), "SeatDefaults", "xserver-command"))
config_set_string (config_get_instance (), "SeatDefaults", "xserver-command", "X");
if (!config_has_key (config_get_instance (), "SeatDefaults", "xserver-share"))
gboolean stopped;
};
-/* PAM services to use */
-#define GREETER_SERVICE "lightdm-greeter"
-#define USER_SERVICE "lightdm"
-#define AUTOLOGIN_SERVICE "lightdm-autologin"
-
static void seat_logger_iface_init (LoggerInterface *iface);
G_DEFINE_TYPE_WITH_CODE (Seat, seat, G_TYPE_OBJECT,
session = create_guest_session (seat, session_name);
if (!session)
return FALSE;
- session_set_pam_service (session, AUTOLOGIN_SERVICE);
+ session_set_pam_service (session, seat_get_string_property (seat, "pam-autologin-service"));
}
else
{
set_session_env (SESSION (greeter_session));
session_set_env (SESSION (greeter_session), "XDG_SESSION_CLASS", "greeter");
- session_set_pam_service (SESSION (greeter_session), GREETER_SERVICE);
+ session_set_pam_service (SESSION (greeter_session), seat_get_string_property (seat, "pam-greeter-service"));
if (getuid () == 0)
{
gchar *greeter_user;
session_set_argv (SESSION (greeter_session), argv);
g_strfreev (argv);
- greeter_set_pam_services (greeter_session, USER_SERVICE, AUTOLOGIN_SERVICE);
+ greeter_set_pam_services (greeter_session,
+ seat_get_string_property (seat, "pam-service"),
+ seat_get_string_property (seat, "pam-autologin-service"));
g_signal_connect (greeter_session, "create-session", G_CALLBACK (greeter_create_session_cb), seat);
g_signal_connect (greeter_session, "start-session", G_CALLBACK (greeter_start_session_cb), seat);
/* Attempt to authenticate them */
session = create_user_session (seat, username, FALSE);
g_signal_connect (session, "authentication-complete", G_CALLBACK (switch_authentication_complete_cb), seat);
- session_set_pam_service (session, USER_SERVICE);
+ session_set_pam_service (session, seat_get_string_property (seat, "pam-service"));
session_start (session);
return FALSE;
if (seat->priv->session_to_activate)
g_object_unref (seat->priv->session_to_activate);
seat->priv->session_to_activate = g_object_ref (session);
- session_set_pam_service (session, AUTOLOGIN_SERVICE);
+ session_set_pam_service (session, seat_get_string_property (seat, "pam-autologin-service"));
session_set_display_server (session, display_server);
return display_server_start (display_server);
session = create_user_session (seat, autologin_username, TRUE);
if (session)
- session_set_pam_service (session, AUTOLOGIN_SERVICE);
+ session_set_pam_service (session, seat_get_string_property (seat, "pam-autologin-service"));
/* Load in background if required */
if (autologin_in_background && session)