liquid_feedback_frontend
diff env/ldap/update_member_attr.lua @ 1071:58f48a8a202a
Imported and merged LDAP patch
author | bsw |
---|---|
date | Fri Jul 18 21:42:59 2014 +0200 (2014-07-18) |
parents | |
children | aefef1556d55 |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/env/ldap/update_member_attr.lua Fri Jul 18 21:42:59 2014 +0200 1.3 @@ -0,0 +1,52 @@ 1.4 +-- check if the corresponding LDAP entry for an LiquidFeedback member 1.5 +-- object is still existent and updates changed attributes 1.6 +-- -------------------------------------------------------------------------- 1.7 +-- 1.8 +-- arguments: 1.9 +-- member: a LiquidFeedback Member object (required) 1.10 +-- ldap_conn: a ldap connection handle (optional) 1.11 +-- uid: the uid of the member (optional, required when creating members) 1.12 +-- 1.13 +-- returns: 1.14 +-- ldap_conn: an LDAP connection 1.15 +-- ldap_entry: the found LDAP entry (if any) 1.16 +-- err: error code in case of an error (string) 1.17 +-- err2: error dependent extra error information 1.18 +-- err3: error dependent extra error information 1.19 + 1.20 +function ldap.update_member_attr(member, ldap_conn, uid) 1.21 + 1.22 + -- do this only for members with ldap authentication 1.23 + if member.authority ~= "ldap" then 1.24 + return nil, nil, "member_is_not_authenticated_by_ldap" 1.25 + end 1.26 + 1.27 + local filter = config.ldap.member.uid_filter_map(member.authority_data_uid or uid) 1.28 + local ldap_entry, err, err2 = ldap.get_member_entry(filter, ldap_conn) 1.29 + 1.30 + if err then 1.31 + return ldap_conn, nil, "ldap_error", err, err2 1.32 + end 1.33 + 1.34 + -- If no corresponding entry found, lock the member 1.35 + if not ldap_entry then 1.36 + member.locked = true 1.37 + member.active = false 1.38 + return ldap_conn 1.39 + end 1.40 + 1.41 + -- If exactly one corresponding entry found, update the attributes 1.42 + local err = config.ldap.member.attr_map(ldap_entry, member) 1.43 + 1.44 + member.authority_data = encode.pg_hstore{ 1.45 + uid = member.authority_data_uid or uid, 1.46 + login = config.ldap.member.login_map(ldap_entry) 1.47 + } 1.48 + 1.49 + if err then 1.50 + return ldap_conn, ldap_entry, "attr_map_error", err 1.51 + end 1.52 + 1.53 + return ldap_conn, ldap_entry 1.54 + 1.55 +end