Mercurial Hosting > disearch
view src/login2.html.luan @ 15:d0b8e1a8fc69
minor
| author | Franklin Schmidt <fschmidt@gmail.com> |
|---|---|
| date | Wed, 01 Nov 2023 00:12:08 -0600 |
| parents | 62dd23f0b549 |
| children | 552d6f944acb |
line wrap: on
line source
local Luan = require "luan:Luan.luan" local error = Luan.error local stringify = Luan.stringify or error() local Parsers = require "luan:Parsers.luan" local json_parse = Parsers.json_parse or error() local Io = require "luan:Io.luan" local uri = Io.uri or error() local Http = require "luan:http/Http.luan" local Config = require "site:/lib/Config.luan" local Shared = require "site:/lib/Shared.luan" local discord_redirect_uri = Shared.discord_redirect_uri or error() local Logging = require "luan:logging/Logging.luan" local logger = Logging.logger "login2.html" return function() local code = Http.request.parameters.code or error() logger.info("code = "..code) local url = "https://discord.com/api/oauth2/token" local config = Config.get() local options = { method = "POST" headers = { ["User-Agent"] = "Disearch" -- for retarded Cloudflare } authorization = { username = config.discord.client_id password = config.discord.client_secret type = "basic" } parameters = { grant_type = "authorization_code" code = code redirect_uri = discord_redirect_uri() } } -- logger.info(stringify(options)) local result = uri(url,options).read_text() -- logger.info(result) result = json_parse(result) local access_token = result.access_token or error() logger.info("access_token = "..access_token) local url = "https://discord.com/api/users/@me" local options = { headers = { ["User-Agent"] = "Disearch" -- for retarded Cloudflare Authorization = "Bearer "..access_token } } local result = uri(url,options).read_text() logger.info(result) result = json_parse(result) local user_id = result.id or error() local user_name = result.username or error() local user_avatar = result.avatar or error() Http.response.set_persistent_cookie("user",user_id) Io.stdout = Http.response.text_writer() %> <!doctype html> <html> <script> localStorage.user_id = '<%=user_id%>'; localStorage.user_name = '<%=user_name%>'; localStorage.user_avatar = '<%=user_avatar%>'; location = '/'; </script> </html> <% end
