From 9efa5a36c50f6cc51b7381a075f5cbfded5c86c0 Mon Sep 17 00:00:00 2001 From: Hamid Reza Mohammadi Date: Sun, 6 Mar 2022 19:07:54 +0330 Subject: [PATCH] docs: #290 store spotify credential --- .../Admin/Pages/SpotifyCallback.cshtml.cs | 34 +++++++++++++++---- GanjooRazor/appsettings.json | 3 +- 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/GanjooRazor/Areas/Admin/Pages/SpotifyCallback.cshtml.cs b/GanjooRazor/Areas/Admin/Pages/SpotifyCallback.cshtml.cs index 7edc08ec..9f4bb357 100644 --- a/GanjooRazor/Areas/Admin/Pages/SpotifyCallback.cshtml.cs +++ b/GanjooRazor/Areas/Admin/Pages/SpotifyCallback.cshtml.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Net.Http; using System.Text; @@ -56,15 +56,35 @@ namespace GanjooRazor.Areas.Admin.Pages string json = await response.Content.ReadAsStringAsync(); var parsed = JObject.Parse(json); access_token = parsed.SelectToken("access_token").Value(); - token_type = parsed.SelectToken("token_type").Value(); - expires_in = parsed.SelectToken("expires_in").Value(); refresh_token = parsed.SelectToken("refresh_token").Value(); + string encryptedAccessToken = EncDecUtil.Encrypt(access_token, Configuration.GetSection("Spotify")["Salt"]); + string encryptedRefreshToken = EncDecUtil.Encrypt(refresh_token, Configuration.GetSection("Spotify")["Salt"]); + + using (HttpClient secureClient = new HttpClient()) + { + if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) + { + var responseSaveOption = await secureClient.PutAsync($"{APIRoot.Url}/api/options/global/SpotifyAccessToken", new StringContent(JsonConvert.SerializeObject(encryptedAccessToken), Encoding.UTF8, "application/json")); + if (!responseSaveOption.IsSuccessStatusCode) + { + Error = JsonConvert.DeserializeObject(await responseSaveOption.Content.ReadAsStringAsync()); + } + else + { + responseSaveOption = await secureClient.PutAsync($"{APIRoot.Url}/api/options/global/SpotifyRefreshToken", new StringContent(JsonConvert.SerializeObject(encryptedRefreshToken), Encoding.UTF8, "application/json")); + if (!responseSaveOption.IsSuccessStatusCode) + { + Error = JsonConvert.DeserializeObject(await responseSaveOption.Content.ReadAsStringAsync()); + } + } + } + else + { + Error = "لطفا از گنجور خارج و مجددا به آن وارد شوید."; + } + } - Dictionary options = new Dictionary(); - options.Add("access_token", access_token); - options.Add("refresh_token", refresh_token); - SpotifyOptions.Options = options; } else { diff --git a/GanjooRazor/appsettings.json b/GanjooRazor/appsettings.json index a85b3b94..71669bfd 100644 --- a/GanjooRazor/appsettings.json +++ b/GanjooRazor/appsettings.json @@ -14,7 +14,8 @@ "MockSpotify": "False", "Spotify": { "client_id": "", - "client_secret": "" + "client_secret": "", + "Salt": "" }, "AggressiveCacheEnabled": "False", "ReadOnlyMode": "False",