| rev |
line source |
|
bsw@905
|
1 local login = param.get("login")
|
|
bsw@905
|
2 local password = param.get("password")
|
|
bsw@905
|
3
|
|
bsw@1071
|
4 local member, err, uid = Member:by_login_and_password(login, password)
|
|
bsw@1071
|
5
|
|
bsw@1071
|
6 if err == "ldap_credentials_valid_but_no_member" then
|
|
bsw@1071
|
7 app.session.authority = "ldap"
|
|
bsw@1074
|
8 app.session.authority_uid = uid
|
|
bsw@1074
|
9 app.session.authority_login = login
|
|
bsw@1071
|
10 app.session:save()
|
|
bsw@1071
|
11 request.redirect{
|
|
bsw@1071
|
12 module = "index", view = "register", params = {
|
|
bsw@1071
|
13 ldap_login = login
|
|
bsw@1071
|
14 }
|
|
bsw@1071
|
15 }
|
|
bsw@1071
|
16 return
|
|
bsw@1071
|
17 end
|
|
bsw/jbe@0
|
18
|
|
bsw@286
|
19 function do_etherpad_auth(member)
|
|
bsw@286
|
20 local result = net.curl(
|
|
bsw@286
|
21 config.etherpad.api_base
|
|
bsw@286
|
22 .. "api/1/createAuthorIfNotExistsFor?apikey=" .. config.etherpad.api_key
|
|
bsw@286
|
23 .. "&name=" .. encode.url_part(member.name) .. "&authorMapper=" .. tostring(member.id)
|
|
bsw@286
|
24 )
|
|
bsw@286
|
25
|
|
bsw@286
|
26 if not result then
|
|
bsw@286
|
27 slot.put_into("error", _"Etherpad authentication failed" .. " 1")
|
|
bsw@286
|
28 return false
|
|
bsw@286
|
29 end
|
|
bsw@286
|
30
|
|
bsw@286
|
31 local etherpad_author_id = string.match(result, '"authorID"%s*:%s*"([^"]+)"')
|
|
bsw@286
|
32
|
|
bsw@286
|
33 if not etherpad_author_id then
|
|
bsw@286
|
34 slot.put_into("error", _"Etherpad authentication failed" .. " 2")
|
|
bsw@286
|
35 return false
|
|
bsw@286
|
36 end
|
|
bsw@286
|
37
|
|
bsw@286
|
38 local time_in_24h = os.time() + 24 * 60 * 60
|
|
bsw@286
|
39
|
|
bsw@286
|
40 local result = net.curl(
|
|
bsw@286
|
41 config.etherpad.api_base
|
|
bsw@286
|
42 .. "api/1/createSession?apikey=" .. config.etherpad.api_key
|
|
bsw@286
|
43 .. "&groupID=" .. config.etherpad.group_id
|
|
bsw@286
|
44 .. "&authorID=" .. etherpad_author_id
|
|
bsw@286
|
45 .. "&validUntil=" .. time_in_24h
|
|
bsw@286
|
46 )
|
|
bsw@286
|
47
|
|
bsw@286
|
48 if not result then
|
|
bsw@286
|
49 slot.put_into("error", _"Etherpad authentication failed" .. " 3")
|
|
bsw@286
|
50 return false
|
|
bsw@286
|
51 end
|
|
bsw@286
|
52
|
|
bsw@286
|
53 local etherpad_sesion_id = string.match(result, '"sessionID"%s*:%s*"([^"]+)"')
|
|
bsw@286
|
54
|
|
bsw@286
|
55 if not etherpad_sesion_id then
|
|
bsw@286
|
56 slot.put_into("error", _"Etherpad authentication failed" .. " 4")
|
|
bsw@286
|
57 return false
|
|
bsw@286
|
58 end
|
|
bsw@286
|
59
|
|
bsw@286
|
60 request.set_cookie{
|
|
bsw@286
|
61 path = config.etherpad.cookie_path,
|
|
bsw@286
|
62 name = "sessionID",
|
|
bsw@286
|
63 value = etherpad_sesion_id
|
|
bsw@286
|
64 }
|
|
bsw@286
|
65 end
|
|
bsw@286
|
66
|
|
bsw/jbe@0
|
67 if member then
|
|
bsw@203
|
68 member.last_login = "now"
|
|
bsw@990
|
69
|
|
bsw@990
|
70 local delegations = Delegation:delegations_to_check_for_member_id(member.id)
|
|
bsw@990
|
71
|
|
bsw@990
|
72 if config.check_delegations_interval_hard
|
|
bsw@990
|
73 and member.needs_delegation_check_hard
|
|
bsw@990
|
74 and #delegations > 0 then
|
|
bsw@990
|
75
|
|
bsw@988
|
76 app.session.needs_delegation_check = true
|
|
bsw@990
|
77
|
|
bsw@988
|
78 else
|
|
bsw@990
|
79
|
|
bsw@990
|
80 if #delegations == 0 then
|
|
bsw@990
|
81 member.last_delegation_check = "now"
|
|
bsw@990
|
82 end
|
|
bsw@990
|
83
|
|
bsw@988
|
84 member.last_activity = "now"
|
|
bsw@988
|
85 member.active = true
|
|
bsw@990
|
86
|
|
bsw@988
|
87 end
|
|
bsw@990
|
88
|
|
bsw@292
|
89 if member.lang == nil then
|
|
bsw@292
|
90 member.lang = app.session.lang
|
|
bsw@292
|
91 else
|
|
bsw@292
|
92 app.session.lang = member.lang
|
|
bsw@292
|
93 end
|
|
bsw@905
|
94
|
|
bsw@905
|
95 if member.password_hash_needs_update then
|
|
bsw@905
|
96 member:set_password(password)
|
|
bsw@905
|
97 end
|
|
bsw@905
|
98
|
|
bsw@203
|
99 member:save()
|
|
bsw/jbe@0
|
100 app.session.member = member
|
|
bsw/jbe@0
|
101 app.session:save()
|
|
bsw/jbe@0
|
102 trace.debug('User authenticated')
|
|
bsw@286
|
103 if config.etherpad then
|
|
bsw@286
|
104 do_etherpad_auth(member)
|
|
bsw@286
|
105 end
|
|
bsw@1045
|
106 slot.select("script", function()
|
|
bsw@1045
|
107 ui.script{ script = [[
|
|
bsw@1045
|
108 $('#swiper_info').addClass('active');
|
|
bsw@1045
|
109 ]] }
|
|
bsw@1045
|
110 end)
|
|
bsw@1045
|
111 slot.select("swiper_info", function()
|
|
bsw@1045
|
112 ui.tag { content = _"select tabs" }
|
|
bsw@1045
|
113 slot.put(" ↑ ")
|
|
bsw@1045
|
114 ui.tag { content = _"or swipe" }
|
|
bsw@1045
|
115 slot.put(" ←<br />")
|
|
bsw@1045
|
116 ui.tag { content = _"to show more info and learn what you can do" }
|
|
bsw@1045
|
117 end )
|
|
bsw/jbe@0
|
118 else
|
|
bsw@3
|
119 slot.select("error", function()
|
|
bsw@756
|
120 ui.tag{ content = _'Invalid login name or password!' }
|
|
bsw/jbe@0
|
121 end)
|
|
bsw/jbe@0
|
122 trace.debug('User NOT authenticated')
|
|
bsw/jbe@0
|
123 return false
|
|
bsw/jbe@0
|
124 end
|