LSform : Added data entry form in create mode
[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     'dataEntryForm' => array (
111       'simple' => array (
112         'label' => 'Simple',
113         'disabledLayout' => true,
114         'displayedElements' => array (
115           'uid',
116           'personalTitle',
117           'givenName',
118           'sn',
119           'cn',
120           'mail',
121           'userPassword'
122         ),
123         'defaultValues' => array (
124           'description' => 'Create with the simple data entry form',
125           'loginShell' => 'no',
126           'gidNumber' => '102001'
127         )
128       )
129     ) // fin dataEntryForm
130   ), // fin LSform
131   
132   'LSsearch' => array (
133     'attrs' => array (
134       'givenName',
135       'sn',
136       'cn',
137       'uid',
138       'mail'
139     ),
140     'params' => array (
141       'recursive' => true,
142     ),
143     'predefinedFilters' => array (
144       '(jpegPhoto=*)' => 'With photo',
145       '(!(jpegPhoto=*))' => 'Without photo'
146     )
147   ),
148   
149   // Attributes
150   'attrs' => array (
151   
152     /* ----------- start -----------*/
153     'uid' => array (
154       'label' => 'Identifier',
155       'ldap_type' => 'ascii',
156       'html_type' => 'text',
157       'html_options' => array(
158         'generate_value_format' => '%{givenName:1}.%{sn}',
159         'autoGenerateOnModify' => true,   // default : false
160         'withoutAccent' => 1,
161         'replaceSpaces' => '.',
162         'lowerCase' => 1
163       ),
164       'required' => 1,
165       'check_data' => array (
166         'regex' => array(
167           'msg' => "Identifier must contain alphanumeric values, dots (.) and dashes (-) only.",
168           'params' => array('regex' => '/^[a-zA-Z0-9-_\.]*$/')
169         ),
170       ),
171       'validation' => array (
172         array (
173           'filter' => 'uid=%{val}',
174           'result' => 0,
175           'msg' => 'This identifier is already used.'
176         )
177       ),
178       'rights' => array(
179         'self' => 'r',
180         'admin' => 'w',
181         'godfather' => 'r'
182       ),
183       'view' => 1,
184       'form' => array (
185         'modify' => 1,
186         'create' => 1
187       ),
188       'dependAttrs' => array(
189         'homeDirectory'
190       )
191     ),
192     /* ----------- end -----------*/
193
194     /* ----------- start -----------*/
195     'uidNumber' => array (
196       'label' => 'Numeric identifier',
197       'ldap_type' => 'numeric',
198       'html_type' => 'text',
199       'required' => 1,
200       'generate_function' => 'generate_uidNumber_withSambaDomainObject',
201       'check_data' => array (
202         'numeric' => array(
203           'msg' => "The numeric identifier must be an integer."
204         ),
205       ),
206       'validation' => array (
207         array (
208           'filter' => 'uidNumber=%{val}',
209           'result' => 0,
210           'msg' => 'This uid is already used.'
211         )
212       ),
213       'rights' => array(
214         'admin' => 'w'
215       ),
216       'view' => 1,
217       'form' => array (
218         'modify' => 0,
219       )
220     ),
221     /* ----------- end -----------*/
222
223     /* ----------- start -----------*/
224     'givenName' => array (
225       'label' => 'First Name',
226       'ldap_type' => 'ascii',
227       'html_type' => 'text',
228       'required' => 1,
229       'default_value' => 'toto',
230       'check_data' => array (
231         'alphanumeric' => array(
232           'msg' => 'The first name must contain alphanumeric values only.'
233         ),
234       ),
235       'rights' => array(
236         'self' => 'r',
237         'users' => 'r',
238         'admin' => 'w',
239         'godfather' => 'w'
240       ),
241       'view' => 1,
242       'form' => array (
243         'modify' => 1,
244         'create' => 1
245       ),
246       'onDisplay' => 'return_data'
247     ),
248     /* ----------- end -----------*/
249
250     /* ----------- start -----------*/
251     'sn' => array (
252       'label' => 'Last Name',
253       'ldap_type' => 'ascii',
254       'html_type' => 'text',
255       'required' => 1,
256       'rights' => array(
257         'self' => 'r',
258         'user' => 'r',
259         'admin' => 'w',
260         'godfather' => 'w'
261       ),
262       'view' => 1,
263       'form' => array (
264         'modify' => 1,
265         'create' => 1
266       )
267     ),
268     /* ----------- end -----------*/
269
270     /* ----------- start -----------*/
271     'cn' => array (
272       'label' => 'Full Name',
273       'ldap_type' => 'ascii',
274       'html_type' => 'text',
275       'html_options' => array(
276         'generate_value_format' => '%{givenName} %{sn}',
277         'autoGenerateOnModify' => true,   // default : false
278         'autoGenerateOnCreate' => true    // default : false
279       ),
280       'required' => 1,
281       'rights' => array(
282         'self' => 'r',
283         'user' => 'r',
284         'admin' => 'w',
285         'godfather' => 'w'
286       ),
287       'view' => 1,
288       'form' => array (
289         'modify' => 1,
290         'create' => 1
291       )
292     ),
293     /* ----------- end -----------*/
294
295     /* ----------- start -----------*/
296     'gidNumber' => array (
297       'label' => 'Main group',
298       'ldap_type' => 'numeric',
299       'html_type' => 'select_list',
300       'html_options' => array (
301         'possible_values' => array(
302           'OTHER_OBJECT' => array(
303             'object_type' => 'LSgroup',                      // Nom de l'objet à lister
304             'display_name_format' => '%{cn} (%{gidNumber})',   // Spécifie le attributs à lister pour le choix,
305                                                                // si non définie => utilisation du 'display_name_format'
306                                                                // de la définition de l'objet
307                                                 
308             'value_attribute' => 'gidNumber',   // Spécifie le attributs dont la valeur sera retournée par
309             /*'filter' =>                         // le formulaire spécifie les filtres de recherche pour
310               array (                           // l'établissement de la liste d'objets :
311                 array(                          // Premier filtre
312                   'filter' => 'cn=*a*',
313                   //'basedn' => 'o=company',
314                   'scope' => 'sub',
315                 )
316               )*/
317           )
318         )
319       ),
320       'multiple' => false,
321       'required' => 1,
322       'validation' => array (
323         array (
324           'msg' => "This group doesn't exist.",
325           'object_type' => 'LSgroup',           // 'object_type' : Permet definir le type d'objet recherchés
326           //'basedn' => 'o=company',                    // et d'utiliser les objectClass définis dans le fichier de configuration
327           'filter' => '(gidNumber=%{val})',       // pour la recherche
328           'result' => 1
329         )
330       ),
331       'rights' => array(
332         'admin' => 'w',
333         'godfather' => 'r'
334       ),
335       'view' => 1,
336       'form' => array (
337         'modify' => 1,
338         'create' => 1
339       )
340     ),
341     /* ----------- end -----------*/
342
343     /* ----------- start -----------*/
344     'loginShell' => array (
345       'label' => 'Command shell',
346       'help_info' => "Allow user to connect a POSIX system.",
347       'ldap_type' => 'boolean',
348       'ldap_options' => array (
349         'true_value' => '/bin/bash',
350         'false_value' => '/bin/false'
351       ),
352       'html_type' => 'boolean',
353       'required' => 1,
354       'default_value' => 'no',
355       'rights' => array(
356         'admin' => 'w'
357       ),
358       'view' => 1,
359       'form' => array (
360         'modify' => 1,
361         'create' => 1
362       )
363     ),
364     /* ----------- end -----------*/
365
366     /* ----------- start -----------*/
367     'sambaSID' => array (
368       'label' => 'Samba Identifier',
369       'ldap_type' => 'ascii',
370       'html_type' => 'text',
371       'required' => 1,
372       'generate_function' => 'generate_sambaUserSID',
373       'rights' => array(
374         'admin' => 'r'
375       ),
376       'form' => array (
377         'modify' => 0
378       )
379     ),
380     /* ----------- end -----------*/
381
382     /* ----------- start -----------*/
383     'homeDirectory' => array (
384       'label' => 'Home Directory',
385       'ldap_type' => 'ascii',
386       'html_type' => 'text',
387       'required' => 1,
388       'generate_function' => 'generate_homeDirectory',
389       'rights' => array(
390         'admin' => 'r'
391       ),
392       'view' => 1
393     ),
394     /* ----------- end -----------*/
395
396     /* ----------- start -----------*/
397     'mail' => array (
398       'label' => 'E-mail address',
399       'ldap_type' => 'ascii',
400       'html_type' => 'mail',
401       'html_options' => array(
402         'generate_value_format' => '%{givenName}.%{sn}@ls.com',
403         'withoutAccent' => 1,
404         'replaceSpaces' => '.',
405         'lowerCase' => 1
406       ),
407       'required' => 1,
408       'check_data' => array (
409         'email' => array(
410           'msg' => "Given email address is invalid.",
411           'params' => array('checkDomain' => false)
412         ),
413       ),
414       'rights' => array(
415         'self' => 'r',
416         'user' => 'r',
417         'admin' => 'w',
418         'godfather' => 'w'
419       ),
420       'view' => 1,
421       'form' => array (
422         'modify' => 1,
423         'create' => 1
424       )
425     ),
426     /* ----------- end -----------*/
427
428     /* ----------- start -----------*/
429     'personalTitle' => array (
430       'label' => 'Civility',
431       'ldap_type' => 'ascii',
432       'html_type' => 'select_list',
433       'html_options' => array (
434         'possible_values' => array(
435           'M.' => 'Mr',
436           'Mme' => 'Mrs',
437           'Mlle' => 'Ms'
438         )
439       ),
440       'required' => 1,
441       'default_value' => 'M.',
442       'rights' => array(
443         'self' => 'r',
444         'user' => 'r',
445         'admin' => 'w',
446         'godfather' => 'w'
447       ),
448       'view' => 1,
449       'form' => array (
450         'modify' => 1,
451         'create' => 1
452       )
453     ),
454     /* ----------- end -----------*/
455
456     /* ----------- start -----------*/
457     'description' => array (
458       'label' => 'Description',
459       'ldap_type' => 'ascii',
460       'html_type' => 'textarea',
461       'multiple' => 1,
462       'rights' => array(
463         'self' => 'r',
464         'user' => 'r',
465         'admin' => 'w',
466         'godfather' => 'w'
467       ),
468       'view' => 1,
469       'form' => array (
470         'modify' => 1,
471         'create' => 1
472       )
473     ),
474     /* ----------- end -----------*/
475
476     /* ----------- start -----------*/
477     'userPassword' => array (
478       'label' => 'Password',
479       'ldap_type' => 'password',
480       'ldap_options' => array (
481         'encode' => 'md5'
482       ),
483       'html_type' => 'password',
484       'html_options' => array(
485         'generationTool' => true,
486         'viewHash' => true,
487         'autoGenerate' => false,
488         'lenght' => 8,
489         'chars' => array (
490           array(
491             'nb' => 3,
492             'chars' => 'abcdefijklmnopqrstuvwxyz'
493           ),
494           '0123456789',
495           '*$.:/_-[]{}=~'
496         ),
497         'mail' => array(
498           'send' => 1,
499           'ask' => 1,
500           'subject' => "LSexample : Your new credentials.",
501           'msg' => "Your password has been changed.\nNew password : %{mdp}",
502           'mail_attr' => 'mail'
503         )
504       ),
505       'check_data' => array(
506         'password' => array(
507           'msg' => 'Your password must contain from 8 to 10 characters.',
508           'params' => array(
509             'minLength' => 8,
510             'maxLength' => 10
511           )
512         )
513       ),
514       'required' => 1,
515       'rights' => array(
516         'self' => 'w',
517         'admin' => 'w'
518       ),
519       'dependAttrs' => array(
520         'sambaLMPassword',
521         'sambaNTPassword'
522       ),
523       'form' => array (
524         'modify' => 1,
525         'create' => 1,
526         'lostPassword' => 1
527       ),
528       'after_modify' => 'valid'
529     ),
530     /* ----------- end -----------*/
531
532     /* ----------- start -----------*/
533     'lsRecoveryHash' => array (
534       'label' => 'Password recovery hash',
535       'ldap_type' => 'ascii',
536       'html_type' => 'text',
537       'required' => 0,
538       'form' => array (
539         'lostPassword' => 1
540       ),
541       'rights' => array(
542         'self' => 'w',
543         'admin' => 'w'
544       )
545     ),
546     /* ----------- end -----------*/
547
548     /* ----------- start -----------*/
549     'sambaLMPassword' => array (
550       'label' => 'Samba Password (LM)',
551       'ldap_type' => 'ascii',
552       'html_type' => 'text',
553       'required' => 1,
554       'generate_function' => 'generate_sambaLMPassword',
555       'form' => array (
556         'modify' => 0
557       )
558     ),
559     /* ----------- end -----------*/
560
561     /* ----------- start -----------*/
562     'sambaNTPassword' => array (
563       'label' => 'Samba Password (NT)',
564       'ldap_type' => 'ascii',
565       'html_type' => 'text',
566       'required' => 1,
567       'generate_function' => 'generate_sambaNTPassword',
568       'form' => array (
569         'modify' => 0
570       )
571     ),
572     /* ----------- end -----------*/
573
574     /* ----------- start -----------*/
575     'jpegPhoto' => array (
576       'label' => 'Picture',
577       'ldap_type' => 'image',
578       'html_type' => 'image',
579       'required' => 0,
580       'view' => 1,
581       'check_data' => array (
582         'imagesize' => array(
583           'msg' => "Picture size is not valid.",
584           'params' => array(
585             'maxWidth' => 2000
586           )
587         ),
588         'filesize' => array(
589           'msg' => "File size is not valid.",
590           'params' => array(
591             'maxSize' => 3000000   // taille du fichier en octets
592           )
593         ),
594         'imagefile' => array(
595           'msg' => "File type is not valid."
596         )
597       ),
598       'form' => array (
599         'modify' => 1
600       ),
601       'rights' => array(
602         'self' => 'w',
603         'user' => 'r',
604         'admin' => 'w',
605         'godfather' => 'w'
606       )
607     ),
608     /* ----------- end -----------*/
609     
610     /* ----------- start -----------*/
611     'lsGodfatherDn' => array (
612       'label' => 'Accountable(s)',
613       'ldap_type' => 'ascii',
614       'html_type' => 'select_object',
615       'html_options' => array (
616         'selectable_object' => array(
617             'object_type' => 'LSpeople',
618             'value_attribute' => '%{dn}'
619         ),
620       ),
621       'validation' => array (
622         array (
623           'basedn' => '%{val}',
624           'result' => 1,
625           'msg' => "One or several users don't exist."
626         )
627       ),
628       'multiple' => 1,
629       'rights' => array(
630         'admin' => 'w'
631       ),
632       'view' => 1,
633       'form' => array (
634         'modify' => 1,
635         'create' => 1
636       )
637     ),
638     /* ----------- end -----------*/
639
640   ) // Fin args
641 );
642 ?>