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

Impressum / About Us