LSformElement_password : Added a view hashed password button.
[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         'viewHash' => 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 ?>