private async Task <bool> IsValidAccessToken(string accessToken) { var profileResponse = await _laDanseRestClient.GetAsync <Profile>(_ladanseUrlBuilder.ProfileUrl(), accessToken); return(profileResponse.IsSuccess && profileResponse.Body != null && profileResponse.Body.GetType() == typeof(Profile)); }
public async Task <EventPage> GetEvents() { try { var discordSiteResponse = await _laDanseRestClient.GetAsync <EventPage>(_laDanseUrlBuilder.QueryEventsUrl(), null); var eventsPage = discordSiteResponse.Body; return(eventsPage); } catch (Exception e) { _logger.LogError("Failed to get events", e.StackTrace); _logger.LogError(e.ToString()); } return(null); }
public IActionResult Website(string authCode) { _logger.LogTrace("ConnectController - " + authCode); #region FetchAccessToken var discordSiteResponse = _laDanseRestClient .GetAsync <AccessTokenResponse>(_laDanseUrlBuilder.DiscordGrantUrl(authCode)) .GetAwaiter().GetResult(); if (!discordSiteResponse.IsSuccess) { _logger.LogTrace("Failed - GetAsync"); return(View("Failure")); } var accessTokenResponse = discordSiteResponse.Body; #endregion #region Fetch AuthSession var authSessions = _dbContext.AuthSessions .Include(a => a.DiscordUser) .Where(a => a.Nonce == accessTokenResponse.Nonce) .ToList(); if (authSessions.Count != 1) { _logger.LogTrace("Failed - no matching AuthSession"); return(View("Failure")); } var authSession = authSessions[0]; #endregion #region CleanUpAccessTokenMappings var accessTokenMappings = _dbContext.AccessTokenMappings .Where(a => a.DiscordUser == authSession.DiscordUser) .ToList(); foreach (var accessTokenMapping in accessTokenMappings) { if (accessTokenMapping.State == AccessTokenState.Active) { accessTokenMapping.State = AccessTokenState.Removed; } } #endregion #region CreateAccessTokenMapping var newAccessTokenMapping = new AccessTokenMapping { AccessToken = accessTokenResponse.AccessToken, CreatedOn = 0, DiscordUser = authSession.DiscordUser, State = AccessTokenState.Active }; _dbContext.AccessTokenMappings.Add(newAccessTokenMapping); authSession.State = AuthSessionState.Consumed; #endregion _dbContext.SaveChanges(); return(View("Success")); }