Mercurial Hosting > disearch
comparison src/login2.html.luan @ 8:9534dd5eda89
use avatar
| author | Franklin Schmidt <fschmidt@gmail.com> |
|---|---|
| date | Tue, 24 Oct 2023 19:31:33 -0600 |
| parents | src/login2.red.luan@f29dd482a25a |
| children | 62dd23f0b549 |
comparison
equal
deleted
inserted
replaced
| 7:f29dd482a25a | 8:9534dd5eda89 |
|---|---|
| 1 local Luan = require "luan:Luan.luan" | |
| 2 local error = Luan.error | |
| 3 local stringify = Luan.stringify or error() | |
| 4 local Parsers = require "luan:Parsers.luan" | |
| 5 local json_parse = Parsers.json_parse or error() | |
| 6 local Io = require "luan:Io.luan" | |
| 7 local uri = Io.uri or error() | |
| 8 local Http = require "luan:http/Http.luan" | |
| 9 local Config = require "site:/lib/Config.luan" | |
| 10 local Shared = require "site:/lib/Shared.luan" | |
| 11 local discord_redirect_uri = Shared.discord_redirect_uri or error() | |
| 12 local Logging = require "luan:logging/Logging.luan" | |
| 13 local logger = Logging.logger "login2.red" | |
| 14 | |
| 15 | |
| 16 return function() | |
| 17 local code = Http.request.parameters.code or error() | |
| 18 logger.info("code = "..code) | |
| 19 | |
| 20 local url = "https://discord.com/api/oauth2/token" | |
| 21 local config = Config.get() | |
| 22 local options = { | |
| 23 method = "POST" | |
| 24 headers = { | |
| 25 ["User-Agent"] = "fuck you" -- for retarded Cloudflare | |
| 26 } | |
| 27 authorization = { | |
| 28 username = config.discord.client_id | |
| 29 password = config.discord.client_secret | |
| 30 type = "basic" | |
| 31 } | |
| 32 parameters = { | |
| 33 grant_type = "authorization_code" | |
| 34 code = code | |
| 35 redirect_uri = discord_redirect_uri() | |
| 36 } | |
| 37 } | |
| 38 -- logger.info(stringify(options)) | |
| 39 local result = uri(url,options).read_text() | |
| 40 -- logger.info(result) | |
| 41 result = json_parse(result) | |
| 42 local access_token = result.access_token or error() | |
| 43 logger.info("access_token = "..access_token) | |
| 44 | |
| 45 local url = "https://discord.com/api/users/@me" | |
| 46 local options = { | |
| 47 headers = { | |
| 48 ["User-Agent"] = "fuck you" -- for retarded Cloudflare | |
| 49 Authorization = "Bearer "..access_token | |
| 50 } | |
| 51 } | |
| 52 local result = uri(url,options).read_text() | |
| 53 logger.info(result) | |
| 54 result = json_parse(result) | |
| 55 local user_id = result.id or error() | |
| 56 local user_name = result.username or error() | |
| 57 local user_avatar = result.avatar or error() | |
| 58 | |
| 59 Http.response.set_persistent_cookie("user",user_id) | |
| 60 Io.stdout = Http.response.text_writer() | |
| 61 %> | |
| 62 <!doctype html> | |
| 63 <html> | |
| 64 <script> | |
| 65 localStorage.user_id = '<%=user_id%>'; | |
| 66 localStorage.user_name = '<%=user_name%>'; | |
| 67 localStorage.user_avatar = '<%=user_avatar%>'; | |
| 68 location = '/'; | |
| 69 </script> | |
| 70 </html> | |
| 71 <% | |
| 72 end |
