From 5fe70eb9aa653c1218d9e420d369819e7d54a9c8 Mon Sep 17 00:00:00 2001 From: infirit Date: Tue, 4 Nov 2014 20:26:50 +0100 Subject: Improve logout lockdown Taken from gnome-session commit: 1e3e0b475cfd352d4abe7ace4ee5a40be04a8b42 From: Ray Strode --- mate-session/gsm-manager.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'mate-session/gsm-manager.c') diff --git a/mate-session/gsm-manager.c b/mate-session/gsm-manager.c index 66ae3a6..a880fb3 100644 --- a/mate-session/gsm-manager.c +++ b/mate-session/gsm-manager.c @@ -215,6 +215,7 @@ gsm_manager_error_get_type (void) ENUM_ENTRY (GSM_MANAGER_ERROR_ALREADY_REGISTERED, "AlreadyRegistered"), ENUM_ENTRY (GSM_MANAGER_ERROR_NOT_REGISTERED, "NotRegistered"), ENUM_ENTRY (GSM_MANAGER_ERROR_INVALID_OPTION, "InvalidOption"), + ENUM_ENTRY (GSM_MANAGER_ERROR_LOCKED_DOWN, "LockedDown"), { 0, 0, 0 } }; @@ -3303,6 +3304,13 @@ gsm_manager_request_reboot (GsmManager *manager, return TRUE; } +static gboolean +_log_out_is_locked_down (GsmManager *manager) +{ + return g_settings_get_boolean (manager->priv->settings_lockdown, + "disable-log-out"); +} + gboolean gsm_manager_shutdown (GsmManager *manager, GError **error) @@ -3386,6 +3394,14 @@ gsm_manager_logout (GsmManager *manager, return FALSE; } + if (_log_out_is_locked_down (manager)) { + g_set_error (error, + GSM_MANAGER_ERROR, + GSM_MANAGER_ERROR_LOCKED_DOWN, + "Logout has been locked down"); + return FALSE; + } + switch (logout_mode) { case GSM_MANAGER_LOGOUT_MODE_NORMAL: case GSM_MANAGER_LOGOUT_MODE_NO_CONFIRMATION: -- cgit v1.2.1