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
|