示例#1
0
文件: account.c 项目: magcius/cockpit
void
account_update (Account *acc,
                ActUser *user)
{
  acc->u = user;
  if (user)
    {
      cockpit_account_set_user_name (COCKPIT_ACCOUNT (acc), act_user_get_user_name (user));
      cockpit_account_set_real_name (COCKPIT_ACCOUNT (acc), act_user_get_real_name (user));
      cockpit_account_set_locked (COCKPIT_ACCOUNT (acc), act_user_get_locked (user));
      cockpit_account_set_last_login (COCKPIT_ACCOUNT (acc), act_user_get_login_time (user));
      cockpit_account_set_logged_in (COCKPIT_ACCOUNT (acc), act_user_is_logged_in_anywhere (user));
      cockpit_account_set_groups (COCKPIT_ACCOUNT (acc), act_user_get_groups (user));
      cockpit_account_emit_changed (COCKPIT_ACCOUNT (acc));
    }
}
示例#2
0
gboolean
would_demote_only_admin (ActUser *user)
{

        ActUserManager *um = act_user_manager_get_default ();

        /* Prevent the user from demoting the only admin account.
         * Returns TRUE when user is an administrator and there is only
         * one enabled administrator. */

        if (act_user_get_account_type (user) == ACT_USER_ACCOUNT_TYPE_STANDARD
            ||  act_user_get_locked (user))
                return FALSE;

        if (get_num_active_admin (um) > 1)
                return FALSE;

        return TRUE;
}
static gboolean
visible_func (GtkTreeModel     *model,
              GtkTreeIter      *iter,
              UmPasswordDialog *um)
{
        if (um->user) {
                gint mode; 
                gboolean locked = act_user_get_locked (um->user);

                gtk_tree_model_get (model, iter, 1, &mode, -1);

                if (mode == UM_PASSWORD_DIALOG_MODE_LOCK_ACCOUNT && locked)
                        return FALSE;

                if (mode == UM_PASSWORD_DIALOG_MODE_UNLOCK_ACCOUNT && !locked)
                        return FALSE;

                return TRUE;
        }

        return TRUE;
}
示例#4
0
static guint
get_num_active_admin (ActUserManager *um)
{
        GSList *list;
        GSList *l;
        guint num_admin = 0;

        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 && !act_user_get_locked (u)) {
                        num_admin++;
                }
        }
        g_slist_free (list);

        return num_admin;
}