liquid_feedback_frontend

annotate env/ldap/update_member_attr.lua @ 1500:71f54c43d7cb

Added API support interface
author bsw
date Tue Mar 24 16:59:32 2020 +0100 (2020-03-24)
parents aefef1556d55
children
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

Impressum / About Us