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