public IActionResult AssociateCode(string code) { CharacterDetails character = _oauthManager.GetCharacterDetailsFromCode(code); string errorMessage = string.Empty; try { _profileManager.AssociateCharacter(User, character); } catch (CharacterAlreadyAssignedException ex) { errorMessage = "Character already assigned to an account"; } catch (Exception ex) { errorMessage = "An error occured. Please try again."; } return(RedirectToAction("Index", new { errorMessage })); }
public IActionResult OAuthCallback(string code) { if (User.Identity.IsAuthenticated) { return(RedirectToAction("AssociateCode", "Profile", new { code })); } else { CharacterDetails authenticatedCharacter = _oAuthManager.GetCharacterDetailsFromCode(code); CharacterDetails associatedCharacter = _characterRepository.GetCharacter(authenticatedCharacter.CharacterID); if (associatedCharacter != null) { ApplicationUser user = _userManager.FindByIdAsync(associatedCharacter.AccountID).Result; _signInManager.SignInAsync(user, true).Wait(); } else { return(ExternalLoginRegistration(authenticatedCharacter)); } return(RedirectToAction("Index", "Home")); } }