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