Rev 7403 | Rev 11431 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
5060 | bpr | 1 | ## INPUT; identifier, class, method (for the moment only ldap) |
5015 | bpr | 2 | ## OUTPUT : wims compatible unique identifier, compatible with class |
5060 | bpr | 3 | ##FIXME php ? |
4 | |||
5 | !read adm/class/authchars |
||
5002 | bpr | 6 | !set limit=2 |
7 | !set limit_while=$[10^$limit] |
||
5060 | bpr | 8 | |
9 | !distribute items $wims_read_parm into login,cl,meth |
||
5002 | bpr | 10 | !set login=!lower $login |
5055 | bpr | 11 | !if $login=$empty |
12 | error=login_empty |
||
13 | !exit |
||
14 | !endif |
||
5031 | bpr | 15 | !set login_ext=$login |
5060 | bpr | 16 | !if $meth!=$empty |
17 | !set meth_=!word 1 of $meth |
||
18 | !bound meth_ within ldap default $empty |
||
19 | !set ldap_id=!word 2 of $meth |
||
20 | !if $ldap_id!=$empty and $meth_ !=$empty |
||
21 | !goto ldap |
||
22 | !exit |
||
23 | !endif |
||
24 | !endif |
||
25 | |||
26 | |||
5002 | bpr | 27 | !set login=!text select $char_alnum in $login |
28 | !set login=!char 1 to $[$login_max -$limit] of $login |
||
11137 | bpr | 29 | !set tmp=!charcnt $login |
30 | !if $tmp<$login_min |
||
31 | !set tmp=!makelist 0 for x=1 to $login_min-$tmp |
||
32 | !set tmp=!items2words $tmp |
||
33 | !set login=!nospace $login$tmp |
||
34 | !reset tmp |
||
35 | !endif |
||
5028 | bpr | 36 | !!set cl=!replace internal / by , in $cl |
37 | !set cl=$(cl[1]) |
||
38 | !if $cl=$empty |
||
39 | !reset login |
||
40 | !exit |
||
41 | !endif |
||
5060 | bpr | 42 | cnt=0 |
43 | u_exists=yes |
||
44 | login_init=$login |
||
45 | !while $u_exists=yes and $cnt<$limit_while |
||
5002 | bpr | 46 | !if $cnt>0 |
47 | login=$login_init$cnt |
||
48 | !endif |
||
5031 | bpr | 49 | !set tt1=!lookup $login_ext in wimshome/log/classes/$cl/.teacherlist_external |
50 | !set tt2=!lookup $login_ext in wimshome/log/classes/$cl/.userlist_external |
||
51 | !if $tt1!=$empty or $tt2!=$empty |
||
5262 | czzmrn | 52 | !! user can be both in .userlist and in .teacherlist (see r5260) |
11137 | bpr | 53 | !if $tt1=$tt2 |
5262 | czzmrn | 54 | login=$tt1 |
55 | !else |
||
56 | login=$tt1$tt2 |
||
57 | !endif |
||
5031 | bpr | 58 | !exit |
59 | !endif |
||
11137 | bpr | 60 | !read adm/class/userisinclass $cl,$login |
5031 | bpr | 61 | !set u_exists=$script_reply |
5002 | bpr | 62 | !increase cnt |
5060 | bpr | 63 | !endwhile |
64 | !if $cnt>=$limit_while |
||
5002 | bpr | 65 | !reset login |
5060 | bpr | 66 | !endif |
5121 | bpr | 67 | !if $login=$empty |
5242 | bpr | 68 | error=login_missing |
69 | missing=!append item $login_ext to $missing |
||
5121 | bpr | 70 | !endif |
5060 | bpr | 71 | !exit |
72 | :ldap |
||
73 | |||
5072 | bpr | 74 | !if $ldap_uid!=$ldap_login and $ldap_login notsametext $empty |
7403 | bpr | 75 | !set login=!sh ldapsearch -x -LLL -t -H ldap://$ldap_auth:$ldap_port -b "$ldap_base" $ldap_uid="$login" $ldap_login | grep -v "^[d]n:" |
5060 | bpr | 76 | !set login=!replace internal : by = in $login |
77 | !set login=!getopt $ldap_login in $login |
||
78 | !set login=!text select $char_alnum in $login |
||
79 | !set login=!char 1 to $[$login_max -$limit] of $login |
||
7403 | bpr | 80 | !set login_char=!charcnt $login |
81 | !if $login_char=3 |
||
82 | !set login=$(login)0 |
||
83 | !endif |
||
5060 | bpr | 84 | !endif |
5121 | bpr | 85 | !if $login=$empty |
86 | error=login_empty |
||
87 | !exit |
||
7403 | bpr | 88 | !endif |