Rev 13323 | 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 |
12555 | bpr | 12 | error=login_empty |
13 | !exit |
||
5055 | bpr | 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 | |||
5002 | bpr | 26 | !set login=!text select $char_alnum in $login |
27 | !set login=!char 1 to $[$login_max -$limit] of $login |
||
15699 | bpr | 28 | !set tmp=!charcnt $login |
29 | !if $tmp<$login_min |
||
30 | login=$(login)00 |
||
31 | !reset tmp |
||
32 | !endif |
||
5028 | bpr | 33 | !!set cl=!replace internal / by , in $cl |
34 | !set cl=$(cl[1]) |
||
35 | !if $cl=$empty |
||
36 | !reset login |
||
37 | !exit |
||
38 | !endif |
||
5060 | bpr | 39 | cnt=0 |
40 | u_exists=yes |
||
41 | login_init=$login |
||
42 | !while $u_exists=yes and $cnt<$limit_while |
||
12555 | bpr | 43 | !if $cnt>0 |
44 | login=$login_init$cnt |
||
45 | !endif |
||
46 | !set tt1=!lookup $login_ext in wimshome/log/classes/$cl/.teacherlist_external |
||
47 | !set tt2=!lookup $login_ext in wimshome/log/classes/$cl/.userlist_external |
||
48 | !if $tt1!=$empty or $tt2!=$empty |
||
49 | !! user can be both in .userlist and in .teacherlist (see r5260) |
||
50 | !if $tt1=$tt2 |
||
51 | login=$tt1 |
||
52 | !else |
||
53 | login=$tt1$tt2 |
||
54 | !endif |
||
55 | !exit |
||
56 | !endif |
||
57 | !read adm/class/userisinclass $cl,$login |
||
58 | !set u_exists=$script_reply |
||
59 | !increase cnt |
||
5060 | bpr | 60 | !endwhile |
61 | !if $cnt>=$limit_while |
||
12555 | bpr | 62 | !reset login |
5060 | bpr | 63 | !endif |
5121 | bpr | 64 | !if $login=$empty |
5242 | bpr | 65 | error=login_missing |
66 | missing=!append item $login_ext to $missing |
||
5121 | bpr | 67 | !endif |
5060 | bpr | 68 | !exit |
69 | :ldap |
||
70 | |||
5072 | bpr | 71 | !if $ldap_uid!=$ldap_login and $ldap_login notsametext $empty |
13323 | georgesk | 72 | !! quite anonymous search, since $ldap_oneuser is unpriviledged |
73 | !set login=!sh ldapsearch -x -LLL -t -H ldap://$ldap_auth:$ldap_port -b "$ldap_base" $ldap_accreditation $ldap_uid="$login" $ldap_login | grep -v "^[d]n:" |
||
12555 | bpr | 74 | !set login=!replace internal : by = in $login |
75 | !set login=!getopt $ldap_login in $login |
||
76 | !set login=!text select $char_alnum in $login |
||
77 | !set login=!char 1 to $[$login_max -$limit] of $login |
||
78 | !set login_char=!charcnt $login |
||
79 | !if $login_char=3 |
||
80 | !set login=$(login)0 |
||
81 | !endif |
||
5060 | bpr | 82 | !endif |
5121 | bpr | 83 | !if $login=$empty |
84 | error=login_empty |
||
85 | !exit |
||
7403 | bpr | 86 | !endif |