liquid_feedback_frontend
diff env/ldap/update_all_members.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_all_members.lua Fri Jul 18 21:42:59 2014 +0200 1.3 @@ -0,0 +1,68 @@ 1.4 +-- check for all LiquidFeedback Members with LDAP authentication 1.5 +-- if the corresponding LDAP entry is still existent and updates 1.6 +-- changed attributes 1.7 +-- -------------------------------------------------------------------------- 1.8 +-- prints debug output to stdout 1.9 +-- 1.10 +-- returns 1.11 +-- success: true if no error occured during run 1.12 +-- false if at least one error occured during run 1.13 + 1.14 +function ldap.update_all_members() 1.15 + 1.16 + local some_error_occured = false 1.17 + 1.18 + local ldap_conn = ldap.bind_as_app() 1.19 + 1.20 + function update_member(member) 1.21 + 1.22 + local function failure (err, err2) 1.23 + Member.get_db_conn():query("ROLLBACK") 1.24 + io.stdout:write("ERROR: ", err, " (", err2, ") id=", tostring(member.id), " uid=", tostring(member.authority_data_uid), "\n") 1.25 + some_error_occured = true 1.26 + end 1.27 + 1.28 + local function success () 1.29 + Member.get_db_conn():query("COMMIT") 1.30 + io.stdout:write("ok: id=", tostring(member.id), " uid=", tostring(member.authority_data_uid), "\n") 1.31 + end 1.32 + 1.33 + Member.get_db_conn():query("BEGIN") 1.34 + 1.35 + local ldap_conn, ldap_entry, err, err2 = ldap.update_member_attr(member, ldap_conn) 1.36 + if err then 1.37 + failure("ldap_update_member", err) 1.38 + return 1.39 + end 1.40 + 1.41 + local err = member:try_save() 1.42 + if err then 1.43 + failure("member_try_save", err) 1.44 + return 1.45 + end 1.46 + 1.47 + if ldap_entry then 1.48 + local success, err, err2 = ldap.update_member_privileges(member, ldap_entry) 1.49 + if err then 1.50 + failure("ldap_update_member_privileges", err) 1.51 + return 1.52 + end 1.53 + 1.54 + end 1.55 + 1.56 + success() 1.57 + 1.58 + end 1.59 + 1.60 + 1.61 + local members = Member:get_all_by_authority("ldap") 1.62 + 1.63 + for i, member in ipairs(members) do 1.64 + update_member(member) 1.65 + end 1.66 + 1.67 + ldap_conn:unbind() 1.68 + 1.69 + return not some_error_occured 1.70 + 1.71 +end