|
4
|
1 local Luan = require "luan:Luan.luan"
|
|
|
2 local error = Luan.error
|
|
6
|
3 local stringify = Luan.stringify or error()
|
|
|
4 local Io = require "luan:Io.luan"
|
|
|
5 local uri = Io.uri or error()
|
|
4
|
6 local Http = require "luan:http/Http.luan"
|
|
6
|
7 local Config = require "site:/lib/Config.luan"
|
|
|
8 local Shared = require "site:/lib/Shared.luan"
|
|
|
9 local discord_redirect_uri = Shared.discord_redirect_uri or error()
|
|
|
10 local Logging = require "luan:logging/Logging.luan"
|
|
|
11 local logger = Logging.logger "login2.red"
|
|
4
|
12
|
|
|
13
|
|
|
14 return function()
|
|
5
|
15 local code = Http.request.parameters.code or error()
|
|
6
|
16 logger.info("code = "..code)
|
|
|
17 --Http.response.set_persistent_cookie("user",code)
|
|
|
18
|
|
|
19 local url = "https://discord.com/api/oauth2/token"
|
|
|
20 local config = Config.get()
|
|
|
21 local options = {
|
|
|
22 method = "POST"
|
|
|
23 headers = {
|
|
|
24 ["Content-Type"] = "application/x-www-form-urlencoded"
|
|
|
25 }
|
|
|
26 authorization = {
|
|
|
27 username = config.discord.client_id
|
|
|
28 password = config.discord.client_secret
|
|
|
29 type = "basic"
|
|
|
30 }
|
|
|
31 parameters = {
|
|
|
32 grant_type = "authorization_code"
|
|
|
33 code = code
|
|
|
34 redirect_uri = discord_redirect_uri()
|
|
|
35 }
|
|
|
36 }
|
|
|
37 logger.info(stringify(options))
|
|
|
38 local result = uri(url,options).read_text()
|
|
|
39 logger.info(result)
|
|
|
40
|
|
4
|
41 Http.response.send_redirect "/"
|
|
|
42 end
|