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