| rev | line source | 
| bsw@1071 | 1 -- check for all LiquidFeedback Members with LDAP authentication | 
| bsw@1071 | 2 -- if the corresponding LDAP entry is still existent and updates | 
| bsw@1071 | 3 -- changed attributes | 
| bsw@1071 | 4 -- -------------------------------------------------------------------------- | 
| bsw@1071 | 5 -- prints debug output to stdout | 
| bsw@1071 | 6 -- | 
| bsw@1071 | 7 -- returns | 
| bsw@1071 | 8 --   success: true if no error occured during run | 
| bsw@1071 | 9 --            false if at least one error occured during run | 
| bsw@1071 | 10 | 
| bsw@1071 | 11 function ldap.update_all_members() | 
| bsw@1071 | 12 | 
| bsw@1071 | 13   local some_error_occured = false | 
| bsw@1071 | 14 | 
| bsw@1071 | 15   local ldap_conn = ldap.bind_as_app() | 
| bsw@1071 | 16 | 
| bsw@1071 | 17   function update_member(member) | 
| bsw@1071 | 18 | 
| bsw@1071 | 19     local function failure (err, err2) | 
| bsw@1071 | 20       Member.get_db_conn():query("ROLLBACK") | 
| bsw@1074 | 21       io.stdout:write("ERROR: ", err, " (", err2, ") id=", tostring(member.id), " uid=", tostring(member.authority_uid), "\n") | 
| bsw@1071 | 22       some_error_occured = true | 
| bsw@1071 | 23     end | 
| bsw@1071 | 24 | 
| bsw@1071 | 25     local function success () | 
| bsw@1071 | 26       Member.get_db_conn():query("COMMIT") | 
| bsw@1074 | 27       io.stdout:write("ok: id=", tostring(member.id), " uid=", tostring(member.authority_uid), "\n") | 
| bsw@1071 | 28     end | 
| bsw@1071 | 29 | 
| bsw@1071 | 30     Member.get_db_conn():query("BEGIN") | 
| bsw@1071 | 31 | 
| bsw@1071 | 32     local ldap_conn, ldap_entry, err, err2 = ldap.update_member_attr(member, ldap_conn) | 
| bsw@1071 | 33     if err then | 
| bsw@1071 | 34       failure("ldap_update_member", err) | 
| bsw@1071 | 35       return | 
| bsw@1071 | 36     end | 
| bsw@1071 | 37 | 
| bsw@1071 | 38     local err = member:try_save() | 
| bsw@1071 | 39     if err then | 
| bsw@1071 | 40       failure("member_try_save", err) | 
| bsw@1071 | 41       return | 
| bsw@1071 | 42     end | 
| bsw@1071 | 43 | 
| bsw@1071 | 44     if ldap_entry then | 
| bsw@1071 | 45       local success, err, err2 = ldap.update_member_privileges(member, ldap_entry) | 
| bsw@1071 | 46       if err then | 
| bsw@1071 | 47         failure("ldap_update_member_privileges", err) | 
| bsw@1071 | 48         return | 
| bsw@1071 | 49       end | 
| bsw@1071 | 50 | 
| bsw@1071 | 51     end | 
| bsw@1071 | 52 | 
| bsw@1071 | 53     success() | 
| bsw@1071 | 54 | 
| bsw@1071 | 55   end | 
| bsw@1071 | 56 | 
| bsw@1071 | 57 | 
| bsw@1071 | 58   local members = Member:get_all_by_authority("ldap") | 
| bsw@1071 | 59 | 
| bsw@1071 | 60   for i, member in ipairs(members) do | 
| bsw@1071 | 61     update_member(member) | 
| bsw@1071 | 62   end | 
| bsw@1071 | 63 | 
| bsw@1071 | 64   ldap_conn:unbind() | 
| bsw@1071 | 65 | 
| bsw@1071 | 66   return not some_error_occured | 
| bsw@1071 | 67 | 
| bsw@1071 | 68 end |