public virtual async Task <ActionResult> SignOnCallback(string returnUrl) { // make sure we have external login info var loginInfo = await _queries.Execute(new PrincipalRemoteMembershipTicket(User)); if (loginInfo == null) { return(RedirectToAction(MVC.SignIn.Index())); } var signOn = new SignOn { Principal = User, }; await _commands.Execute(signOn); if (signOn.SignedOn != null) { Response.ClientCookie(signOn.SignedOn.Id, _queries); return(this.RedirectToLocal(returnUrl, await MVC.UserName.Index())); } // if user doesn't have an email claim, we need them to verify an email address var emailClaim = await _queries.Execute(new ExternalCookieClaim(ClaimTypes.Email)); if (emailClaim == null) { return(RedirectToAction(await MVC.SignOnSendEmail.Index(returnUrl))); } // if user does have an email claim, create a verification against it var createEmailVerification = new CreateEmailVerification { Purpose = EmailVerificationPurpose.CreateRemoteUser, EmailAddress = emailClaim.Value, }; await _commands.Execute(createEmailVerification); return(RedirectToAction(await MVC.SignOnCreateUser.Index( createEmailVerification.CreatedEntity.Token, createEmailVerification.CreatedEntity.Ticket, returnUrl))); }
public virtual async Task<ActionResult> SignOnCallback(string returnUrl) { // make sure we have external login info var loginInfo = await _queries.Execute(new PrincipalRemoteMembershipTicket(User)); if (loginInfo == null) return RedirectToAction(MVC.SignIn.Index()); var signOn = new SignOn { Principal = User, }; await _commands.Execute(signOn); if (signOn.SignedOn != null) { Response.ClientCookie(signOn.SignedOn.Id, _queries); return this.RedirectToLocal(returnUrl, await MVC.UserName.Index()); } // if user doesn't have an email claim, we need them to verify an email address var emailClaim = await _queries.Execute(new ExternalCookieClaim(ClaimTypes.Email)); if (emailClaim == null) return RedirectToAction(await MVC.SignOnSendEmail.Index(returnUrl)); // if user does have an email claim, create a verification against it var createEmailVerification = new CreateEmailVerification { Purpose = EmailVerificationPurpose.CreateRemoteUser, EmailAddress = emailClaim.Value, }; await _commands.Execute(createEmailVerification); return RedirectToAction(await MVC.SignOnCreateUser.Index( createEmailVerification.CreatedEntity.Token, createEmailVerification.CreatedEntity.Ticket, returnUrl)); }