protected void SetUserInfoToCooke(User user) { string encVal = null; if (user != null) { string serUser = SerializeUtil.SerializeAnObject(user); encVal = EncDecUtil.Encrypt(serUser, Configs.CRYPTO_PASSWORD); } HttpCookie cookie = new HttpCookie(Keywords.USER) { Value = encVal, Expires = DateTime.Now.AddDays(user != null ? Configs.COOKIE_LIFE_TIME : -1) }; Response.Cookies.Add(cookie); }
private async Task _RefreshSpotifyToken() { if (_memoryCache.TryGetValue("SpotifyAccessToken", out string spotifyAccessToken)) { using (HttpClient secureClient = new HttpClient()) { if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) { var responseOption = await secureClient.GetAsync($"{APIRoot.Url}/api/options/global/SpotifyAccessToken"); if (!responseOption.IsSuccessStatusCode) { return; } else { string encryptedAccessToken = JsonConvert.DeserializeObject <string>(await responseOption.Content.ReadAsStringAsync()); string newSpotifyAccessToken = EncDecUtil.Decrypt(encryptedAccessToken, Configuration.GetSection("Spotify")["Salt"]); if (newSpotifyAccessToken != spotifyAccessToken) { _memoryCache.Set("SpotifyAccessToken", newSpotifyAccessToken); return; } } } else { return; } } } string refresh_token; using (HttpClient secureClient = new HttpClient()) { if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response)) { var responseOption = await secureClient.GetAsync($"{APIRoot.Url}/api/options/global/SpotifyRefreshToken"); if (!responseOption.IsSuccessStatusCode) { return; } else { string encryptedRefreshToken = JsonConvert.DeserializeObject <string>(await responseOption.Content.ReadAsStringAsync()); refresh_token = EncDecUtil.Decrypt(encryptedRefreshToken, Configuration.GetSection("Spotify")["Salt"]); } } else { return; } } var nvc = new List <KeyValuePair <string, string> >(); nvc.Add(new KeyValuePair <string, string>("grant_type", "refresh_token")); nvc.Add(new KeyValuePair <string, string>("refresh_token", refresh_token)); var formContent = new FormUrlEncodedContent(nvc); var request = new HttpRequestMessage(HttpMethod.Post, "https://accounts.spotify.com/api/token"); request.Content = formContent; string authValue = Convert.ToBase64String(new ASCIIEncoding().GetBytes($"{Configuration.GetSection("Spotify")["client_id"]}:{Configuration.GetSection("Spotify")["client_secret"]}")); request.Headers.Add("Authorization", $"Basic {authValue}"); var response = await _httpClient.SendAsync(request); if (response.IsSuccessStatusCode) { string json = await response.Content.ReadAsStringAsync(); var parsed = JObject.Parse(json); string access_token = parsed.SelectToken("access_token").Value <string>(); string encryptedAccessToken = EncDecUtil.Encrypt(access_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) { return; } _memoryCache.Set("SpotifyAccessToken", access_token); } } } }
public async Task <ActionResult> OnPostAsync(string code) { if (string.IsNullOrEmpty(Request.Cookies["Token"])) { return(Redirect("/")); } var nvc = new List <KeyValuePair <string, string> >(); nvc.Add(new KeyValuePair <string, string>("grant_type", "authorization_code")); nvc.Add(new KeyValuePair <string, string>("code", code)); string callbackUrl = $"{Configuration["SiteUrl"]}/Admin/SpotifyCallback"; nvc.Add(new KeyValuePair <string, string>("redirect_uri", callbackUrl)); var formContent = new FormUrlEncodedContent(nvc); var client = _clientFactory.CreateClient(); var request = new HttpRequestMessage(HttpMethod.Post, "https://accounts.spotify.com/api/token"); request.Content = formContent; string authValue = Convert.ToBase64String(new ASCIIEncoding().GetBytes($"{Configuration.GetSection("Spotify")["client_id"]}:{Configuration.GetSection("Spotify")["client_secret"]}")); request.Headers.Add("Authorization", $"Basic {authValue}"); var response = await client.SendAsync(request); if (response.IsSuccessStatusCode) { string json = await response.Content.ReadAsStringAsync(); var parsed = JObject.Parse(json); access_token = parsed.SelectToken("access_token").Value <string>(); refresh_token = parsed.SelectToken("refresh_token").Value <string>(); token_type = parsed.SelectToken("token_type").Value <string>(); expires_in = parsed.SelectToken("expires_in").Value <string>(); 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 <string>(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 <string>(await responseSaveOption.Content.ReadAsStringAsync()); } } } else { Error = "لطفا از گنجور خارج و مجددا به آن وارد شوید."; } } } else { Error = JsonConvert.DeserializeObject <string>(await response.Content.ReadAsStringAsync()); } return(new OkResult()); }