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