summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2012-12-06 23:22:47 -0500
committerMatthias Clasen <mclasen@redhat.com>2012-12-06 23:22:47 -0500
commit729a2feb54dbbaeea051f36ff81093dc682202f3 (patch)
treee9fbb24231420630c16a75f5fce90954d72fca7b
parent9c3def4bcc348f14f21c9f694b7dde53c7c46d42 (diff)
Add act_user_manager_get_user_by_id
This function looks up an ActUser object for a given uid.
-rw-r--r--src/libaccountsservice/act-user-manager.c27
-rw-r--r--src/libaccountsservice/act-user-manager.h2
2 files changed, 29 insertions, 0 deletions
diff --git a/src/libaccountsservice/act-user-manager.c b/src/libaccountsservice/act-user-manager.c
index 0b50829..6387f3a 100644
--- a/src/libaccountsservice/act-user-manager.c
+++ b/src/libaccountsservice/act-user-manager.c
@@ -2065,6 +2065,33 @@ act_user_manager_get_user (ActUserManager *manager,
return user;
}
+/**
+ * act_user_manager_get_user_by_id:
+ * @manager: the manager to query.
+ * @id: the uid of the user to get.
+ *
+ * Retrieves a pointer to the #ActUser object for the user with the
+ * given uid from @manager. Trying to use this object before its
+ * #ActUser:is-loaded property is %TRUE will result in undefined
+ * behavior.
+ *
+ * Returns: (transfer none): #ActUser object
+ */
+ActUser *
+act_user_manager_get_user_by_id (ActUserManager *manager,
+ uid_t id)
+{
+ ActUser *user;
+ gchar *object_path;
+
+ g_return_val_if_fail (ACT_IS_USER_MANAGER (manager), NULL);
+
+ object_path = g_strdup_printf ("/org/freedesktop/Accounts/User%ld", id);
+ user = add_new_user_for_object_path (object_path, manager);
+ g_free (object_path);
+ return user;
+}
+
static void
listify_hash_values_hfunc (gpointer key,
gpointer value,
diff --git a/src/libaccountsservice/act-user-manager.h b/src/libaccountsservice/act-user-manager.h
index 7548102..b51e392 100644
--- a/src/libaccountsservice/act-user-manager.h
+++ b/src/libaccountsservice/act-user-manager.h
@@ -78,6 +78,8 @@ ActUserManager * act_user_manager_get_default (void);
GSList * act_user_manager_list_users (ActUserManager *manager);
ActUser * act_user_manager_get_user (ActUserManager *manager,
const char *username);
+ActUser * act_user_manager_get_user_by_id (ActUserManager *manager,
+ uid_t id);
gboolean act_user_manager_activate_user_session (ActUserManager *manager,
ActUser *user);