// GET: Sso public ActionResult Callback() { // Create a callback model with all the relevant information var callback = new SsoCallbackModel { SsoCode = Request.Params["code"], State = Request.Params["state"] ?? "add" }; var token = Esi.Auth.GetTokenComposite(callback.SsoCode, TokenAuthenticationType.VerifyAuthCode); var tokenWrapper = new DbTokenWrapper(token); callback.TokenUuid = tokenWrapper.Uuid; TokenCache.Add(tokenWrapper); var status = callback.State; switch (status) { case "add": return(RedirectToAction("AddTokenToDb", callback)); case "signup": return(RedirectToAction("SignUpStepComplete", callback)); case "signin": return(RedirectToAction("SignIn", callback)); default: return(RedirectToAction("AddTokenToDb", callback)); } }
public async Task <ActionResult> AddTokenToDb(SsoCallbackModel callback) { var context = new AppDbContext(); var token = TokenCache.FirstOrDefault(t => t.Uuid == callback.TokenUuid); context.Tokens.Add(token); await context.SaveChangesAsync(); TokenCache.Remove(token); return(View(callback)); }
public ActionResult SignUpStepComplete(SsoCallbackModel callback) { ViewBag.CallBack = callback; var token = TokenCache.FirstOrDefault(t => t.Uuid == callback.TokenUuid); var entity = new UserEntity { MainCharacter = token?.CharacterId ?? 0 }; return(View(entity)); }