rev |
line source |
bsw@1071
|
1 -- check if the corresponding LDAP entry for an LiquidFeedback member
|
bsw@1071
|
2 -- object is still existent and updates changed attributes
|
bsw@1071
|
3 -- --------------------------------------------------------------------------
|
bsw@1071
|
4 --
|
bsw@1071
|
5 -- arguments:
|
bsw@1071
|
6 -- member: a LiquidFeedback Member object (required)
|
bsw@1071
|
7 -- ldap_conn: a ldap connection handle (optional)
|
bsw@1071
|
8 -- uid: the uid of the member (optional, required when creating members)
|
bsw@1071
|
9 --
|
bsw@1071
|
10 -- returns:
|
bsw@1071
|
11 -- ldap_conn: an LDAP connection
|
bsw@1071
|
12 -- ldap_entry: the found LDAP entry (if any)
|
bsw@1071
|
13 -- err: error code in case of an error (string)
|
bsw@1071
|
14 -- err2: error dependent extra error information
|
bsw@1071
|
15 -- err3: error dependent extra error information
|
bsw@1071
|
16
|
bsw@1071
|
17 function ldap.update_member_attr(member, ldap_conn, uid)
|
bsw@1071
|
18
|
bsw@1071
|
19 -- do this only for members with ldap authentication
|
bsw@1071
|
20 if member.authority ~= "ldap" then
|
bsw@1071
|
21 return nil, nil, "member_is_not_authenticated_by_ldap"
|
bsw@1071
|
22 end
|
bsw@1071
|
23
|
bsw@1074
|
24 local filter = config.ldap.member.uid_filter_map(member.authority_uid or uid)
|
bsw@1071
|
25 local ldap_entry, err, err2 = ldap.get_member_entry(filter, ldap_conn)
|
bsw@1071
|
26
|
bsw@1071
|
27 if err then
|
bsw@1071
|
28 return ldap_conn, nil, "ldap_error", err, err2
|
bsw@1071
|
29 end
|
bsw@1071
|
30
|
bsw@1071
|
31 -- If no corresponding entry found, lock the member
|
bsw@1071
|
32 if not ldap_entry then
|
bsw@1071
|
33 member.locked = true
|
bsw@1071
|
34 member.active = false
|
bsw@1071
|
35 return ldap_conn
|
bsw@1071
|
36 end
|
bsw@1071
|
37
|
bsw@1071
|
38 -- If exactly one corresponding entry found, update the attributes
|
bsw@1071
|
39 local err = config.ldap.member.attr_map(ldap_entry, member)
|
bsw@1071
|
40
|
bsw@1074
|
41 member.authority_uid = member.authority_uid or uid
|
bsw@1074
|
42 member.authority_login = config.ldap.member.login_map(ldap_entry)
|
bsw@1071
|
43
|
bsw@1071
|
44 if err then
|
bsw@1071
|
45 return ldap_conn, ldap_entry, "attr_map_error", err
|
bsw@1071
|
46 end
|
bsw@1071
|
47
|
bsw@1071
|
48 return ldap_conn, ldap_entry
|
bsw@1071
|
49
|
bsw@1071
|
50 end
|