1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
2  *
3  * Copyright (C) 2004-2005 James M. Cape <jcape@ignore-your.tv>.
4  * Copyright (C) 2007-2008 William Jon McCann <mccann@jhu.edu>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  */
20 
21 /*
22  * Facade object for user data, owned by ActUserManager
23  */
24 
25 #ifndef __ACT_USER_H__
26 #define __ACT_USER_H__
27 
28 #include <sys/types.h>
29 #include <glib.h>
30 #include <glib-object.h>
31 
32 G_BEGIN_DECLS
33 
34 #define ACT_TYPE_USER (act_user_get_type ())
35 #define ACT_USER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), ACT_TYPE_USER, ActUser))
36 #define ACT_IS_USER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), ACT_TYPE_USER))
37 
38 typedef enum {
39         ACT_USER_ACCOUNT_TYPE_STANDARD,
40         ACT_USER_ACCOUNT_TYPE_ADMINISTRATOR,
41 } ActUserAccountType;
42 
43 typedef enum {
44         ACT_USER_PASSWORD_MODE_REGULAR,
45         ACT_USER_PASSWORD_MODE_SET_AT_LOGIN,
46         ACT_USER_PASSWORD_MODE_NONE,
47 } ActUserPasswordMode;
48 
49 typedef struct _ActUser ActUser;
50 typedef struct _ActUserClass ActUserClass;
51 
52 GType          act_user_get_type                  (void) G_GNUC_CONST;
53 
54 const char    *act_user_get_object_path           (ActUser *user);
55 
56 uid_t          act_user_get_uid                   (ActUser   *user);
57 const char    *act_user_get_user_name             (ActUser   *user);
58 const char    *act_user_get_real_name             (ActUser   *user);
59 ActUserAccountType act_user_get_account_type      (ActUser   *user);
60 ActUserPasswordMode act_user_get_password_mode    (ActUser   *user);
61 const char    *act_user_get_password_hint         (ActUser   *user);
62 const char    *act_user_get_home_dir              (ActUser   *user);
63 const char    *act_user_get_shell                 (ActUser   *user);
64 const char    *act_user_get_email                 (ActUser   *user);
65 const char    *act_user_get_location              (ActUser   *user);
66 guint          act_user_get_num_sessions          (ActUser   *user);
67 guint          act_user_get_num_sessions_anywhere (ActUser   *user);
68 gboolean       act_user_is_logged_in              (ActUser   *user);
69 gboolean       act_user_is_logged_in_anywhere     (ActUser   *user);
70 int            act_user_get_login_frequency       (ActUser   *user);
71 gint64         act_user_get_login_time            (ActUser   *user);
72 const GVariant*act_user_get_login_history         (ActUser   *user);
73 gboolean       act_user_get_saved                 (ActUser   *user);
74 gboolean       act_user_get_locked                (ActUser   *user);
75 gboolean       act_user_get_automatic_login       (ActUser   *user);
76 gboolean       act_user_is_system_account         (ActUser   *user);
77 gboolean       act_user_is_local_account          (ActUser   *user);
78 gboolean       act_user_is_nonexistent            (ActUser   *user);
79 const char    *act_user_get_icon_file             (ActUser   *user);
80 const char    *act_user_get_language              (ActUser   *user);
81 const char    *act_user_get_x_session             (ActUser   *user);
82 const char    *act_user_get_session               (ActUser   *user);
83 const char    *act_user_get_session_type          (ActUser   *user);
84 const char    *act_user_get_primary_session_id    (ActUser   *user);
85 
86 gint           act_user_collate                   (ActUser   *user1,
87                                                    ActUser   *user2);
88 gboolean       act_user_is_loaded                 (ActUser   *user);
89 
90 void           act_user_get_password_expiration_policy (ActUser   *user,
91                                                         gint64    *expiration_time,
92                                                         gint64    *last_change_time,
93                                                         gint64    *min_days_between_changes,
94                                                         gint64    *max_days_between_changes,
95                                                         gint64    *days_to_warn,
96                                                         gint64    *days_after_expiration_until_lock);
97 
98 void           act_user_set_email                 (ActUser    *user,
99                                                    const char *email);
100 void           act_user_set_language              (ActUser    *user,
101                                                    const char *language);
102 void           act_user_set_x_session             (ActUser    *user,
103                                                    const char *x_session);
104 void           act_user_set_session               (ActUser    *user,
105                                                    const char *session);
106 void           act_user_set_session_type          (ActUser    *user,
107                                                    const char *session_type);
108 void           act_user_set_location              (ActUser    *user,
109                                                    const char *location);
110 void           act_user_set_user_name             (ActUser    *user,
111                                                    const char  *user_name);
112 void           act_user_set_real_name             (ActUser    *user,
113                                                    const char *real_name);
114 void           act_user_set_icon_file             (ActUser    *user,
115                                                    const char *icon_file);
116 void           act_user_set_account_type          (ActUser    *user,
117                                                    ActUserAccountType account_type);
118 void           act_user_set_password              (ActUser     *user,
119                                                    const gchar *password,
120                                                    const gchar *hint);
121 void           act_user_set_password_hint         (ActUser             *user,
122                                                    const gchar *hint);
123 void           act_user_set_password_mode         (ActUser             *user,
124                                                    ActUserPasswordMode  password_mode);
125 void           act_user_set_locked                (ActUser    *user,
126                                                    gboolean    locked);
127 void           act_user_set_automatic_login       (ActUser   *user,
128                                                    gboolean  enabled);
129 
130 #if GLIB_CHECK_VERSION(2, 44, 0)
131 G_DEFINE_AUTOPTR_CLEANUP_FUNC (ActUser, g_object_unref)
132 #endif
133 
134 G_END_DECLS
135 
136 #endif /* __ACT_USER_H__ */
137