7ec8f26f2187cda53b3ef6f83854e2fa4fa1f8d6
[ldapsaisie.git] / public_html / conf / LSobjects / config.LSobjects.LSpeople.php
1 <?php
2 /*******************************************************************************
3  * Copyright (C) 2007 Easter-eggs
4  * http://ldapsaisie.labs.libre-entreprise.org
5  *
6  * Author: See AUTHORS file in top-level directory.
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License version 2
10  * as published by the Free Software Foundation.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
20
21 ******************************************************************************/
22
23 $GLOBALS['LSobjects']['LSpeople'] = array (
24   'objectclass' => array(
25     'top',
26     'lspeople',
27     'posixAccount',
28     'sambaSamAccount',
29   ),
30   'rdn' => 'uid',
31   'container_dn' => 'ou=people',
32   
33   'container_auto_create' => array(
34     'objectclass' => array(
35       'top',
36       'organizationalUnit'
37     ),
38     'attrs' => array(
39       'ou' => 'people'
40     )
41   ),
42   
43   'before_modify' => 'valid',
44   'after_modify' => 'valid',
45   //'after_create' => 'createMaildirByFTP',
46   //'after_delete' => 'removeMaildirByFTP',
47   'display_name_format' => '%{cn}',
48   'label' => 'Users',
49   
50   // LSrelation
51   'LSrelation' => array(
52     'groups' => array(
53       'label' => 'Belongs to groups ...',
54       'emptyText' => "Doesn't belong to any group.",
55       'LSobject' => 'LSgroup',
56       'list_function' => 'listUserGroups',
57       'getkeyvalue_function' => 'getMemberKeyValue',
58       'update_function' => 'updateUserGroups',
59       'remove_function' => 'deleteOneMember',
60       'rename_function' => 'renameOneMember',
61       'canEdit_function' => 'canEditGroupRelation',
62       'canEdit_attribute' => 'uniqueMember',
63       'rights' => array(
64         'self' => 'r',
65         'admin' => 'w',
66         'admingroup' => 'w'
67       )
68     )
69   ),
70   
71   // LSform
72   'LSform' => array (
73     'ajaxSubmit' => 1,
74     // Layout
75     'layout' => array (
76       'Civilite' => array(
77         'label' => 'Civility',
78         'img' => 1, 
79         'args' => array (
80           'uid',
81           'personalTitle',
82           'givenName',
83           'sn',
84           'cn',
85           'mail',
86           'userPassword',
87           'description',
88           'jpegPhoto',
89           'lsGodfatherDn'
90         )
91       ),
92       'Posix' => array (
93         'label' => 'Posix',
94         'args' => array (
95           'uidNumber',
96           'gidNumber',
97           'loginShell',
98           'homeDirectory'
99         )
100       ),
101       'Samba' => array (
102         'label' => 'Samba',
103         'args' => array (
104           'sambaSID',
105           'sambaLMPassword',
106           'sambaNTPassword'
107         )
108       )
109     ) // fin Layout
110   ), // fin LSform
111   
112   'LSsearch' => array (
113     'attrs' => array (
114       'givenName',
115       'sn',
116       'cn',
117       'uid',
118       'mail'
119     ),
120     'params' => array (
121       'recursive' => true
122     )
123   ),
124   
125   // Attributes
126   'attrs' => array (
127   
128     /* ----------- start -----------*/
129     'uid' => array (
130       'label' => 'Identifier',
131       'ldap_type' => 'ascii',
132       'html_type' => 'text',
133       'html_options' => array(
134         'generate_value_format' => '%{givenName:1}.%{sn}',
135         'autoGenerateOnModify' => true,   // default : false
136         'withoutAccent' => 1,
137         'replaceSpaces' => '.',
138         'lowerCase' => 1
139       ),
140       'required' => 1,
141       'check_data' => array (
142         'regex' => array(
143           'msg' => "Identifier must contain alphanumeric values, dots (.) and dashes (-) only.",
144           'params' => array('regex' => '/^[a-zA-Z0-9-_\.]*$/')
145         ),
146       ),
147       'validation' => array (
148         array (
149           'filter' => 'uid=%{val}',
150           'result' => 0,
151           'msg' => 'This identifier is already used.'
152         )
153       ),
154       'rights' => array(
155         'self' => 'r',
156         'admin' => 'w',
157         'godfather' => 'r'
158       ),
159       'view' => 1,
160       'form' => array (
161         'modify' => 1,
162         'create' => 1
163       ),
164       'dependAttrs' => array(
165         'homeDirectory'
166       )
167     ),
168     /* ----------- end -----------*/
169
170     /* ----------- start -----------*/
171     'uidNumber' => array (
172       'label' => 'Numeric identifier',
173       'ldap_type' => 'numeric',
174       'html_type' => 'text',
175       'required' => 1,
176       'generate_function' => 'generate_uidNumber_withSambaDomainObject',
177       'check_data' => array (
178         'numeric' => array(
179           'msg' => "The numeric identifier must be an integer."
180         ),
181       ),
182       'validation' => array (
183         array (
184           'filter' => 'uidNumber=%{val}',
185           'result' => 0,
186           'msg' => 'This uid is already used.'
187         )
188       ),
189       'rights' => array(
190         'admin' => 'w'
191       ),
192       'view' => 1,
193       'form' => array (
194         'modify' => 0,
195       )
196     ),
197     /* ----------- end -----------*/
198
199     /* ----------- start -----------*/
200     'givenName' => array (
201       'label' => 'First Name',
202       'ldap_type' => 'ascii',
203       'html_type' => 'text',
204       'required' => 1,
205       'default_value' => 'toto',
206       'check_data' => array (
207         'alphanumeric' => array(
208           'msg' => 'The first name must contain alphanumeric values only.'
209         ),
210       ),
211       'rights' => array(
212         'self' => 'r',
213         'users' => 'r',
214         'admin' => 'w',
215         'godfather' => 'w'
216       ),
217       'view' => 1,
218       'form' => array (
219         'modify' => 1,
220         'create' => 1
221       ),
222       'onDisplay' => 'return_data'
223     ),
224     /* ----------- end -----------*/
225
226     /* ----------- start -----------*/
227     'sn' => array (
228       'label' => 'Last Name',
229       'ldap_type' => 'ascii',
230       'html_type' => 'text',
231       'required' => 1,
232       'rights' => array(
233         'self' => 'r',
234         'user' => 'r',
235         'admin' => 'w',
236         'godfather' => 'w'
237       ),
238       'view' => 1,
239       'form' => array (
240         'modify' => 1,
241         'create' => 1
242       )
243     ),
244     /* ----------- end -----------*/
245
246     /* ----------- start -----------*/
247     'cn' => array (
248       'label' => 'Full Name',
249       'ldap_type' => 'ascii',
250       'html_type' => 'text',
251       'html_options' => array(
252         'generate_value_format' => '%{givenName} %{sn}',
253         'autoGenerateOnModify' => true,   // default : false
254         'autoGenerateOnCreate' => true    // default : false
255       ),
256       'required' => 1,
257       'validation' => 'valid',
258       'rights' => array(
259         'self' => 'r',
260         'user' => 'r',
261         'admin' => 'w',
262         'godfather' => 'w'
263       ),
264       'view' => 1,
265       'form' => array (
266         'modify' => 1,
267         'create' => 1
268       )
269     ),
270     /* ----------- end -----------*/
271
272     /* ----------- start -----------*/
273     'gidNumber' => array (
274       'label' => 'Main group',
275       'ldap_type' => 'numeric',
276       'html_type' => 'select_list',
277       'html_options' => array (
278         'possible_values' => array(
279           'OTHER_OBJECT' => array(
280             'object_type' => 'LSgroup',                      // Nom de l'objet à lister
281             'display_name_format' => '%{cn} (%{gidNumber})',   // Spécifie le attributs à lister pour le choix,
282                                                                // si non définie => utilisation du 'display_name_format'
283                                                                // de la définition de l'objet
284                                                 
285             'value_attribute' => 'gidNumber',   // Spécifie le attributs dont la valeur sera retournée par
286             /*'filter' =>                         // le formulaire spécifie les filtres de recherche pour
287               array (                           // l'établissement de la liste d'objets :
288                 array(                          // Premier filtre
289                   'filter' => 'cn=*a*',
290                   //'basedn' => 'o=company',
291                   'scope' => 'sub',
292                 )
293               )*/
294           )
295         )
296       ),
297       'multiple' => false,
298       'required' => 1,
299       'validation' => array (
300         array (
301           'msg' => "This group doesn't exist.",
302           'object_type' => 'LSgroup',           // 'object_type' : Permet definir le type d'objet recherchés
303           //'basedn' => 'o=company',                    // et d'utiliser les objectClass définis dans le fichier de configuration
304           'filter' => '(gidNumber=%{val})',       // pour la recherche
305           'result' => 1
306         )
307       ),
308       'rights' => array(
309         'admin' => 'w',
310         'godfather' => 'r'
311       ),
312       'view' => 1,
313       'form' => array (
314         'modify' => 1,
315         'create' => 1
316       )
317     ),
318     /* ----------- end -----------*/
319
320     /* ----------- start -----------*/
321     'loginShell' => array (
322       'label' => 'Command shell',
323       'help_info' => "Allow user to connect a POSIX system.",
324       'ldap_type' => 'boolean',
325       'ldap_options' => array (
326         'true_value' => '/bin/bash',
327         'false_value' => '/bin/false'
328       ),
329       'html_type' => 'boolean',
330       'required' => 1,
331       'default_value' => 'no',
332       'rights' => array(
333         'admin' => 'w'
334       ),
335       'view' => 1,
336       'form' => array (
337         'modify' => 1,
338         'create' => 1
339       )
340     ),
341     /* ----------- end -----------*/
342
343     /* ----------- start -----------*/
344     'sambaSID' => array (
345       'label' => 'Samba Identifier',
346       'ldap_type' => 'ascii',
347       'html_type' => 'text',
348       'required' => 1,
349       'generate_function' => 'generate_sambaUserSID',
350       'rights' => array(
351         'admin' => 'r'
352       ),
353       'form' => array (
354         'modify' => 0
355       )
356     ),
357     /* ----------- end -----------*/
358
359     /* ----------- start -----------*/
360     'homeDirectory' => array (
361       'label' => 'Home Directory',
362       'ldap_type' => 'ascii',
363       'html_type' => 'text',
364       'required' => 1,
365       'generate_function' => 'generate_homeDirectory',
366       'rights' => array(
367         'admin' => 'r'
368       ),
369       'view' => 1
370     ),
371     /* ----------- end -----------*/
372
373     /* ----------- start -----------*/
374     'mail' => array (
375       'label' => 'E-mail address',
376       'ldap_type' => 'ascii',
377       'html_type' => 'mail',
378       'html_options' => array(
379         'generate_value_format' => '%{givenName}.%{sn}@ls.com',
380         'withoutAccent' => 1,
381         'replaceSpaces' => '.',
382         'lowerCase' => 1
383       ),
384       'required' => 1,
385       'check_data' => array (
386         'email' => array(
387           'msg' => "Given email address is invalid.",
388           'params' => array('checkDomain' => false)
389         ),
390       ),
391       'rights' => array(
392         'self' => 'r',
393         'user' => 'r',
394         'admin' => 'w',
395         'godfather' => 'w'
396       ),
397       'view' => 1,
398       'form' => array (
399         'modify' => 1,
400         'create' => 1
401       )
402     ),
403     /* ----------- end -----------*/
404
405     /* ----------- start -----------*/
406     'personalTitle' => array (
407       'label' => 'Civility',
408       'ldap_type' => 'ascii',
409       'html_type' => 'select_list',
410       'html_options' => array (
411         'possible_values' => array(
412           'M.' => 'Mr',
413           'Mme' => 'Mrs',
414           'Mlle' => 'Ms'
415         )
416       ),
417       'required' => 1,
418       'default_value' => 'M.',
419       'rights' => array(
420         'self' => 'r',
421         'user' => 'r',
422         'admin' => 'w',
423         'godfather' => 'w'
424       ),
425       'view' => 1,
426       'form' => array (
427         'modify' => 1,
428         'create' => 1
429       )
430     ),
431     /* ----------- end -----------*/
432
433     /* ----------- start -----------*/
434     'description' => array (
435       'label' => 'Description',
436       'ldap_type' => 'ascii',
437       'html_type' => 'textarea',
438       'multiple' => 1,
439       'rights' => array(
440         'self' => 'r',
441         'user' => 'r',
442         'admin' => 'w',
443         'godfather' => 'w'
444       ),
445       'view' => 1,
446       'form' => array (
447         'modify' => 1,
448         'create' => 1
449       )
450     ),
451     /* ----------- end -----------*/
452
453     /* ----------- start -----------*/
454     'userPassword' => array (
455       'label' => 'Password',
456       'ldap_type' => 'password',
457       'ldap_options' => array (
458         'encode' => 'md5'
459       ),
460       'html_type' => 'password',
461       'html_options' => array(
462         'generationTool' => true,
463         'autoGenerate' => false,
464         'lenght' => 8,
465         'chars' => array (
466           array(
467             'nb' => 3,
468             'chars' => 'abcdefijklmnopqrstuvwxyz'
469           ),
470           '0123456789',
471           '*$.:/_-[]{}=~'
472         ),
473         'mail' => array(
474           'send' => 1,
475           'ask' => 1,
476           'subject' => "LSexample : Your new credentials.",
477           'msg' => "Your password has been changed.\nNew password : %{mdp}",
478           'mail_attr' => 'mail'
479         )
480       ),
481       'check_data' => array(
482         'password' => array(
483           'msg' => 'Your password must contain from 8 to 10 characters.',
484           'params' => array(
485             'minLength' => 8,
486             'maxLength' => 10
487           )
488         )
489       ),
490       'required' => 1,
491       'rights' => array(
492         'self' => 'w',
493         'admin' => 'w'
494       ),
495       'dependAttrs' => array(
496         'sambaLMPassword',
497         'sambaNTPassword'
498       ),
499       'form' => array (
500         'modify' => 1,
501         'create' => 1,
502         'lostPassword' => 1
503       ),
504       'after_modify' => 'valid'
505     ),
506     /* ----------- end -----------*/
507
508     /* ----------- start -----------*/
509     'lsRecoveryHash' => array (
510       'label' => 'Password recovery hash',
511       'ldap_type' => 'ascii',
512       'html_type' => 'text',
513       'required' => 0,
514       'form' => array (
515         'lostPassword' => 1
516       ),
517       'rights' => array(
518         'self' => 'w',
519         'admin' => 'w'
520       )
521     ),
522     /* ----------- end -----------*/
523
524     /* ----------- start -----------*/
525     'sambaLMPassword' => array (
526       'label' => 'Samba Password (LM)',
527       'ldap_type' => 'ascii',
528       'html_type' => 'text',
529       'required' => 1,
530       'generate_function' => 'generate_sambaLMPassword',
531       'form' => array (
532         'modify' => 0
533       )
534     ),
535     /* ----------- end -----------*/
536
537     /* ----------- start -----------*/
538     'sambaNTPassword' => array (
539       'label' => 'Samba Password (NT)',
540       'ldap_type' => 'ascii',
541       'html_type' => 'text',
542       'required' => 1,
543       'generate_function' => 'generate_sambaNTPassword',
544       'form' => array (
545         'modify' => 0
546       )
547     ),
548     /* ----------- end -----------*/
549
550     /* ----------- start -----------*/
551     'jpegPhoto' => array (
552       'label' => 'Picture',
553       'ldap_type' => 'image',
554       'html_type' => 'image',
555       'required' => 0,
556       'view' => 1,
557       'check_data' => array (
558         'imagesize' => array(
559           'msg' => "Picture size is not valid.",
560           'params' => array(
561             'maxWidth' => 2000
562           )
563         ),
564         'filesize' => array(
565           'msg' => "File size is not valid.",
566           'params' => array(
567             'maxSize' => 3000000   // taille du fichier en octets
568           )
569         ),
570         'imagefile' => array(
571           'msg' => "File type is not valid."
572         )
573       ),
574       'form' => array (
575         'modify' => 1
576       ),
577       'rights' => array(
578         'self' => 'w',
579         'user' => 'r',
580         'admin' => 'w',
581         'godfather' => 'w'
582       )
583     ),
584     /* ----------- end -----------*/
585     
586     /* ----------- start -----------*/
587     'lsGodfatherDn' => array (
588       'label' => 'Accountable(s)',
589       'ldap_type' => 'ascii',
590       'html_type' => 'select_object',
591       'html_options' => array (
592         'selectable_object' => array(
593             'object_type' => 'LSpeople',
594             'value_attribute' => '%{dn}'
595         ),
596       ),
597       'validation' => array (
598         array (
599           'basedn' => '%{val}',
600           'result' => 1,
601           'msg' => "One or several users don't exist."
602         )
603       ),
604       'multiple' => 1,
605       'rights' => array(
606         'admin' => 'w'
607       ),
608       'view' => 1,
609       'form' => array (
610         'modify' => 1,
611         'create' => 1
612       )
613     ),
614     /* ----------- end -----------*/
615
616   ) // Fin args
617 );
618 ?>