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);
 }