@page "{code}"
@model yaflay.ru.Pages.AuthorizeModel
@using System.Text.Json.Nodes
@{
ViewData["Title"] = "Authorize";
if (Model.code == null)
{
if (Request.Cookies["melon"]?.ToString() == null)
{
Login while Discord
}
else
{
HttpResponseMessage message;
using (var requestMessage =
new HttpRequestMessage(HttpMethod.Get, "https://discordapp.com/api/oauth2/@me"))
{
requestMessage.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", Request.Cookies["melon"]); ;
message = await Startup.client.SendAsync(requestMessage);
}
string responseBody = await message.Content.ReadAsStringAsync();
JsonNode response = JsonNode.Parse(responseBody);
if (response["user"] != null)
{
Вы авторизованы!
Админка
}
else
{
Токен авторизации неправильный! Попробуйте заново
}
}
}
else
{
HttpResponseMessage message;
using (var requestMessage =
new HttpRequestMessage(HttpMethod.Post, "https://discordapp.com/api/oauth2/token"))
{
requestMessage.Content = new StringContent(
@$"grant_type=authorization_code&code={Model.code}&client_id={Startup.clientId}&client_secret={Startup.clientSecret}&scope=identify&redirect_uri=https://yawaflua.ru/authorize",
new System.Net.Http.Headers.MediaTypeHeaderValue("application/x-www-form-urlencoded")
);
message = await Startup.client.SendAsync(requestMessage);
}
string responseBody = await message.Content.ReadAsStringAsync();
JsonNode body = JsonNode.Parse(responseBody);
if (body["access_token"]?.ToString() == null)
{
Ошибка! Попробуй авторизоваться заново
}
else
{
Response.Cookies.Append("melon", body["access_token"].ToString());
Response.Cookies.Append("watermelon", body["refresh_token"].ToString());
Response.Redirect("/authorize");
}
}
}