Subversion Repositories wimsdev

Rev

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