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