bsw@1071: -- check for all LiquidFeedback Members with LDAP authentication bsw@1071: -- if the corresponding LDAP entry is still existent and updates bsw@1071: -- changed attributes bsw@1071: -- -------------------------------------------------------------------------- bsw@1071: -- prints debug output to stdout bsw@1071: -- bsw@1071: -- returns bsw@1071: -- success: true if no error occured during run bsw@1071: -- false if at least one error occured during run bsw@1071: bsw@1071: function ldap.update_all_members() bsw@1071: bsw@1071: local some_error_occured = false bsw@1071: bsw@1071: local ldap_conn = ldap.bind_as_app() bsw@1071: bsw@1639: local function update_member(member) bsw@1071: bsw@1071: local function failure (err, err2) bsw@1071: Member.get_db_conn():query("ROLLBACK") bsw@1074: io.stdout:write("ERROR: ", err, " (", err2, ") id=", tostring(member.id), " uid=", tostring(member.authority_uid), "\n") bsw@1071: some_error_occured = true bsw@1071: end bsw@1071: bsw@1071: local function success () bsw@1071: Member.get_db_conn():query("COMMIT") bsw@1074: io.stdout:write("ok: id=", tostring(member.id), " uid=", tostring(member.authority_uid), "\n") bsw@1071: end bsw@1071: bsw@1071: Member.get_db_conn():query("BEGIN") bsw@1071: bsw@1071: local ldap_conn, ldap_entry, err, err2 = ldap.update_member_attr(member, ldap_conn) bsw@1071: if err then bsw@1071: failure("ldap_update_member", err) bsw@1071: return bsw@1071: end bsw@1071: bsw@1642: ldap.update_member_allowed(member, ldap_entry) bsw@1642: bsw@1071: local err = member:try_save() bsw@1071: if err then bsw@1071: failure("member_try_save", err) bsw@1071: return bsw@1071: end bsw@1071: bsw@1071: if ldap_entry then bsw@1071: local success, err, err2 = ldap.update_member_privileges(member, ldap_entry) bsw@1071: if err then bsw@1071: failure("ldap_update_member_privileges", err) bsw@1071: return bsw@1071: end bsw@1071: bsw@1071: end bsw@1071: bsw@1071: success() bsw@1071: bsw@1071: end bsw@1071: bsw@1071: bsw@1071: local members = Member:get_all_by_authority("ldap") bsw@1071: bsw@1071: for i, member in ipairs(members) do bsw@1071: update_member(member) bsw@1071: end bsw@1071: bsw@1071: ldap_conn:unbind() bsw@1071: bsw@1071: return not some_error_occured bsw@1071: bsw@1071: end