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