root/trunk/midgard/apis/php5/php_midgard_user.c

Revision 14292, 5.7 kB (checked in by piotras, 1 year ago)

Removed warning

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1 /* Copyright (C) 2007 Piotr Pokora <piotrek.pokora@gmail.com>
2  * This program is free software; you can redistribute it and/or modify it
3  * under the terms of the GNU Lesser General Public License as published
4  * by the Free Software Foundation; either version 2 of the License, or
5  * (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software
14  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
15 */
16
17 #include "php_midgard.h"
18 #include "php_midgard_gobject.h"
19
20 static zend_class_entry *php_midgard_user_class;
21
22 /* Object constructor */
23 static PHP_METHOD(midgard_user, __construct)
24 {       
25         RETVAL_FALSE;
26         CHECK_MGD;
27         MidgardUser *user = NULL;
28         zval *param_object = NULL;
29         zval *zval_object = getThis();
30
31         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|o",
32                                 &param_object) == FAILURE) {
33                 return;
34         }
35        
36
37         if(param_object){
38                
39                 php_midgard_gobject *ppo =
40                         (php_midgard_gobject *)zend_object_store_get_object(
41                                         param_object TSRMLS_CC);
42                 if(ppo) {
43                         MgdObject *person = MIDGARD_OBJECT(ppo->gobject);
44                         user = midgard_user_new(person);
45                 }
46        
47         } else {
48                
49                 user = midgard_user_new(NULL);
50         }
51
52         if(!user)
53                 RETURN_FALSE;
54
55         php_midgard_gobject *php_gobject =
56                 (php_midgard_gobject *)zend_object_store_get_object(zval_object TSRMLS_CC);
57         php_gobject->gobject = G_OBJECT(user);
58 }
59
60 static PHP_METHOD(midgard_user, auth)
61 {
62         RETVAL_FALSE;
63         CHECK_MGD;
64         zend_bool zbool = FALSE;
65
66         gchar *name, *pass, *sgname = NULL;
67         guint name_length, pass_length, sgname_length;
68
69         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|sb",
70                                 &name, &name_length,
71                                 &pass, &pass_length,
72                                 &sgname, &sgname_length, &zbool) == FAILURE) {
73                 return;
74         }
75
76         MidgardUser *user =
77                 midgard_user_auth(mgd_handle(),
78                                 (const gchar *)name,
79                                 (const gchar *)pass,
80                                 (const gchar *)sgname,
81                                 (gboolean) zbool);
82
83         if(user) {
84                 object_init_ex(return_value, php_midgard_user_class);
85                 php_midgard_gobject *php_gobject =
86                         (php_midgard_gobject *)zend_object_store_get_object(return_value TSRMLS_CC);
87                 php_gobject->gobject = G_OBJECT(user);
88         }
89 }
90
91 static PHP_METHOD(midgard_user, is_user)
92 {
93         CHECK_MGD;
94         gboolean rv;
95         zval *zval_object = getThis();
96
97         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, ""
98                                 ) == FAILURE) {
99                 return;
100         }
101
102         php_midgard_gobject *php_gobject =
103                 (php_midgard_gobject *)zend_object_store_get_object(zval_object TSRMLS_CC);
104        
105         MidgardUser *user =
106                 (MidgardUser *) php_gobject->gobject;
107
108         rv = midgard_user_is_user(user);
109        
110         RETURN_BOOL(rv);
111 }
112
113 static PHP_METHOD(midgard_user, is_admin)
114 {
115         CHECK_MGD;
116         gboolean rv;
117         zval *zval_object = getThis();
118
119         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, ""
120                                 ) == FAILURE) {
121                 return;
122         }
123
124         php_midgard_gobject *php_gobject =
125                 (php_midgard_gobject *)zend_object_store_get_object(zval_object TSRMLS_CC);
126        
127         MidgardUser *user =
128                 (MidgardUser *) php_gobject->gobject;
129        
130         rv = midgard_user_is_admin(user);
131        
132         RETURN_BOOL(rv);
133 }
134
135 static PHP_METHOD(midgard_user, is_root)
136 {
137         CHECK_MGD;
138         gboolean rv;
139         zval *zval_object = getThis();
140
141         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, ""
142                                 ) == FAILURE) {
143                 return;
144         }
145
146         php_midgard_gobject *php_gobject =
147                 (php_midgard_gobject *)zend_object_store_get_object(zval_object TSRMLS_CC);
148        
149         MidgardUser *user =
150                 (MidgardUser *) php_gobject->gobject;
151
152         rv = midgard_user_is_root(user);
153        
154         RETURN_BOOL(rv);
155 }
156
157 static PHP_METHOD(midgard_user, set_active)
158 {
159         CHECK_MGD;
160         gboolean rv;
161         zval *zval_object = getThis();
162         zend_bool zbool = FALSE;
163
164         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "b",
165                                 &zbool) == FAILURE) {
166                 return;
167         }
168
169         php_midgard_gobject *php_gobject =
170                 (php_midgard_gobject *)zend_object_store_get_object(zval_object TSRMLS_CC);
171        
172         MidgardUser *user =
173                 (MidgardUser *) php_gobject->gobject;
174        
175         rv = midgard_user_set_active(user, (gboolean)zbool);
176        
177         RETURN_BOOL(rv);
178 }
179
180 static PHP_METHOD(midgard_user, password)
181 {
182         RETVAL_FALSE;
183         CHECK_MGD;
184         zval *zval_object = getThis();
185         gboolean rv;
186         gchar *login, *pass;
187         guint login_length, pass_length;
188         long hashtype = 0;
189
190         if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|l",
191                                 &login, &login_length,
192                                 &pass, &pass_length, &hashtype) == FAILURE) {
193                 return;
194         }
195
196         php_midgard_gobject *php_gobject =
197                 (php_midgard_gobject *)zend_object_store_get_object(zval_object TSRMLS_CC);
198        
199         MidgardUser *user =
200                 (MidgardUser *) php_gobject->gobject;
201        
202         rv = midgard_user_password(user,
203                         (const gchar *)login,
204                         (const gchar *)pass,
205                         (guint)hashtype);
206        
207         RETURN_BOOL(rv);
208 }
209
210 /* Initialize ZEND&PHP class */
211 void php_midgard_user_init(int module_numer)
212 {
213
214         static function_entry midgard_user_methods[] = {
215                 PHP_ME(midgard_user,    __construct,    NULL, ZEND_ACC_PUBLIC)
216                 PHP_ME(midgard_user,    auth,           NULL, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
217                 PHP_ME(midgard_user,    is_user,        NULL, ZEND_ACC_PUBLIC)
218                 PHP_ME(midgard_user,    is_admin,        NULL, ZEND_ACC_PUBLIC)
219                 PHP_ME(midgard_user,    is_root,        NULL, ZEND_ACC_PUBLIC)
220                 PHP_ME(midgard_user,    set_active,     NULL, ZEND_ACC_PUBLIC)
221                 PHP_ME(midgard_user,    password,        NULL, ZEND_ACC_PUBLIC)
222                 {NULL, NULL, NULL}
223         };
224
225         static zend_class_entry php_midgard_user_class_entry;
226
227         INIT_CLASS_ENTRY(
228                         php_midgard_user_class_entry,
229                         "midgard_user", midgard_user_methods);
230
231         php_midgard_user_class =
232                 zend_register_internal_class(
233                                 &php_midgard_user_class_entry TSRMLS_CC);
234        
235         /* Set function to initialize underlying data */
236         php_midgard_user_class->create_object = php_midgard_gobject_new;       
237 }
Note: See TracBrowser for help on using the browser.