[gnome-control-center/gnome-3-8] user-accounts: fix counting of administrators in num_admin_accounts ()



commit 92725a40f8b006ecb7dbde90ec71a91c92d8390c
Author: Joshua Lock <joshua lock intel com>
Date:   Tue Jun 18 18:19:05 2013 +0100

    user-accounts: fix counting of administrators in num_admin_accounts ()
    
    Don't count inactive administrator accounts when trying to prevent the
    user from disabling or deleting the only administrator account.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=690246

 panels/user-accounts/um-utils.c |   11 ++++++-----
 1 files changed, 6 insertions(+), 5 deletions(-)
---
diff --git a/panels/user-accounts/um-utils.c b/panels/user-accounts/um-utils.c
index 80be727..190d709 100644
--- a/panels/user-accounts/um-utils.c
+++ b/panels/user-accounts/um-utils.c
@@ -1035,7 +1035,7 @@ set_user_icon_data (ActUser   *user,
 }
 
 static guint
-get_num_admin (ActUserManager *um)
+get_num_active_admin (ActUserManager *um)
 {
         GSList *list;
         GSList *l;
@@ -1044,7 +1044,7 @@ get_num_admin (ActUserManager *um)
         list = act_user_manager_list_users (um);
         for (l = list; l != NULL; l = l->next) {
                 ActUser *u = l->data;
-                if (act_user_get_account_type (u) == ACT_USER_ACCOUNT_TYPE_ADMINISTRATOR) {
+                if (act_user_get_account_type (u) == ACT_USER_ACCOUNT_TYPE_ADMINISTRATOR && 
!act_user_get_locked (u)) {
                         num_admin++;
                 }
         }
@@ -1061,12 +1061,13 @@ would_demote_only_admin (ActUser *user)
 
         /* Prevent the user from demoting the only admin account.
          * Returns TRUE when user is an administrator and there is only
-         * one administrator */
+         * one enabled administrator. */
 
-        if (act_user_get_account_type (user) == ACT_USER_ACCOUNT_TYPE_STANDARD)
+        if (act_user_get_account_type (user) == ACT_USER_ACCOUNT_TYPE_STANDARD
+            ||  act_user_get_locked (user))
                 return FALSE;
 
-        if (get_num_admin (um) > 1)
+        if (get_num_active_admin (um) > 1)
                 return FALSE;
 
         return TRUE;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]