liquid_feedback_frontend

view app/main/oauth2_client/callback.lua @ 1741:772c18d87b54

Fixed syntax error
author bsw
date Mon Oct 11 10:38:04 2021 +0200 (2021-10-11)
parents 5eb8b596f7d4
children
line source
1 local provider = param.get("provider")
2 local provider_config = config.oauth2_providers[provider]
3 if not provider_config then
4 return
5 end
8 local error = param.get("error")
10 if error then
11 ui.heading{ content = "OAuth error" }
12 ui.container{ content = error }
13 return
14 end
16 local state = param.get("state")
18 if state ~= app.session:additional_secret_for("oauth") then
19 ui.heading{ content = "OAuth error" }
20 ui.container{ content = "state invalid" }
21 return
22 end
24 local code = param.get("code")
26 local params = {
27 code = code,
28 client_id = provider_config.client_id,
29 client_secret = provider_config.client_secret,
30 redirect_uri = request.get_absolute_baseurl() .. "oauth2_client/callback.html?provider=" .. provider,
31 grant_type = "authorization_code"
32 }
34 local params_list = {}
35 for key, val in pairs(params) do
36 table.insert(params_list, encode.url_part(key) .. "=" .. encode.url_part(val))
37 end
39 local r = table.concat(params_list, "&")
41 local output, err, status = extos.pfilter(nil, "curl", "-X", "POST", "-d", r, provider_config.token_url)
43 local result = json.import(output)
45 local url = provider_config.id_url .. "?access_token=" .. encode.url_part(result.access_token)
47 local output, err, status = extos.pfilter(nil, "curl", url)
49 local id_result = json.import(output)
51 local id = id_result[provider_config.id_field]
52 local email = id_result[provider_config.email_field]
54 if id then
55 local member = Member:new_selector()
56 :add_where{ "authority = ?", "oauth2_" .. provider }
57 :add_where{ "authority_uid = ?", id }
58 :optional_object_mode()
59 :exec()
61 if not member then
62 member = Member:new()
63 member.authority = "oauth2_" .. provider
64 member.authority_uid = id
65 member.notify_email = email
66 member.name = "Member " .. id
67 member.identification = "Member " .. id
68 member.activated = "now"
69 member:save()
70 for i, unit_id in ipairs(provider_config.unit_ids) do
71 local privilege = Privilege:new()
72 privilege.member_id = member.id
73 privilege.unit_id = unit_id
74 privilege.initiative_right = true
75 privilege.voting_right = true
76 privilege:save()
77 end
78 end
79 member.last_login = "now"
80 member.last_activity = "now"
81 member.active = true
82 member:save()
83 app.session.member = member
84 app.session:save()
85 request.redirect{ external = request.get_absolute_baseurl() }
87 end

Impressum / About Us