public ActionResult ExternalLoginCallback(string returnUrl) { AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication(base.Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl })); if (!result.IsSuccessful) { return base.RedirectToAction("ExternalLoginFailure"); } bool flag = false; string userName = OAuthWebSecurity.GetUserName(result.Provider, result.ProviderUserId); if (userName != null) { flag = WebSecurity.IsConfirmed(userName); if (flag) { bool createPersistentCookie = false; if (OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, createPersistentCookie)) { return this.RedirectToLocal(returnUrl); } if (base.User.Identity.IsAuthenticated) { OAuthWebSecurity.CreateOrUpdateAccount(result.Provider, result.ProviderUserId, base.User.Identity.Name); return this.RedirectToLocal(returnUrl); } } else { string userConfirmationToken = MembershipHelper.GetUserConfirmationToken(WebSecurity.GetUserId(userName)); if (userConfirmationToken != null) { this.SendRegistrationConfirmMail(ConfirmMailOperation.confirm, userName, userConfirmationToken); } } } ((dynamic) base.ViewBag).NotConfirmedEmail = (userName != null) && !flag; string str3 = OAuthWebSecurity.SerializeProviderUserId(result.Provider, result.ProviderUserId); AuthenticationClientData oAuthClientData = OAuthWebSecurity.GetOAuthClientData(result.Provider); ((dynamic) base.ViewBag).ProviderDisplayName = oAuthClientData.DisplayName; ((dynamic) base.ViewBag).ReturnUrl = returnUrl; RegisterExternalLoginModel model = new RegisterExternalLoginModel { UserName = (result.UserName.Contains("@") && result.UserName.Contains(".")) ? result.UserName : "", ExternalLoginData = str3 }; return base.View("ExternalLoginConfirmation", model); }
public ActionResult ExternalLoginConfirmation(RegisterExternalLoginModel model, string returnUrl) { string providerName = null; string providerUserId = null; if (!(!base.User.Identity.IsAuthenticated && OAuthWebSecurity.TryDeserializeProviderUserId(model.ExternalLoginData, out providerName, out providerUserId))) { return this.RedirectToLocal(returnUrl); } if (base.ModelState.IsValid) { try { string password = Guid.NewGuid().ToString(); bool requireConfirmationToken = true; string confirmationToken = WebSecurity.CreateUserAndAccount(model.UserName, password, null, requireConfirmationToken); OAuthWebSecurity.CreateOrUpdateAccount(providerName, providerUserId, model.UserName); this.SendRegistrationConfirmMail(ConfirmMailOperation.confirm, model.UserName, confirmationToken); return base.RedirectToAction("registersuccess", new { returnUrl = returnUrl }); } catch (MembershipCreateUserException exception) { base.ModelState.AddModelError("", ErrorCodeToString(exception.StatusCode)); } } ((dynamic) base.ViewBag).NotConfirmedEmail = false; ((dynamic) base.ViewBag).ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(providerName).DisplayName; ((dynamic) base.ViewBag).ReturnUrl = returnUrl; return base.View(model); }