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