| 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
 |