// // GET: /Manage/LinkLoginCallback public async Task <ActionResult> LinkLoginCallback() { var loginInfo = await _userManager.GetExternalLoginInfoAsync(XsrfKey, UserId.ToString()); if (loginInfo == null) { return(RedirectToAction("ManageLogins", new { Message = ManageMessageId.Error })); } var result = await _userManager.AddLoginAsync(UserId, loginInfo.Login); return(result.Succeeded ? RedirectToAction("ManageLogins") : RedirectToAction("ManageLogins", new { Message = ManageMessageId.Error })); }
// // GET: /Manage/LinkLoginCallback public async Task <ActionResult> LinkLoginCallback() { var loginInfo = await _authenticationManager.GetExternalLoginInfoAsync(XsrfKey, User.Identity.GetUserId()).ConfigureAwait(false); if (loginInfo == null) { return(RedirectToAction("ManageLogins", new { Message = ManageMessageId.Error })); } var result = await _userManager.AddLoginAsync(_userManager.GetCurrentUserId(), loginInfo.Login).ConfigureAwait(false); return(result.Succeeded ? RedirectToAction("ManageLogins") : RedirectToAction("ManageLogins", new { Message = ManageMessageId.Error })); }
public async Task <string> ExternalLoginAsync(ExternalLoginInfo info) { if (info == null) { return($"در عملیات ورود به سایت از طریق حساب {info.ProviderDisplayName} خطایی رخ داده است. "); } var UserEmail = info.Principal.FindFirstValue(ClaimTypes.Email); var user = await _userManager.FindByEmailAsync(UserEmail); if (user == null) { return("شما عضو سایت نیستید برای ورود به سایت ابتدا باید عضو سایت شوید."); } else { var Result = await _signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, false); if (Result.Succeeded) { return("success"); } else if (Result.IsLockedOut) { return("حساب کاربری شما به مدت 20 دقیقه به دلیل تلاش های ناموفق قفل شد."); } else if (Result.RequiresTwoFactor) { return("requiresTwoFactor"); } else { var ExternalResult = await _userManager.AddLoginAsync(user, info); if (ExternalResult.Succeeded) { await _signInManager.SignInAsync(user, false); return("success"); } else { return($"در عملیات ورود به سایت از طریق حساب {info.ProviderDisplayName} خطایی رخ داده است. "); } } } }
public async Task <IActionResult> GetCallBackAsync() { var info = await _signInManager.GetExternalLoginInfoAsync(); if (info == null) { ModelState.AddModelError(string.Empty, $"در عملیات ورود به سایت از طریق حساب {info.ProviderDisplayName} خطایی رخ داده است. "); } var UserEmail = info.Principal.FindFirstValue(ClaimTypes.Email); var user = await _userManager.FindByEmailAsync(UserEmail); if (user == null) { ModelState.AddModelError(string.Empty, "شما عضو سایت نیستید برای ورود به سایت ابتدا باید عضو سایت شوید."); } else { var Result = await _signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, false); if (Result.Succeeded) { return(RedirectToAction("Index", "Home")); } else if (Result.IsLockedOut) { ModelState.AddModelError(string.Empty, "حساب کاربری شما به مدت 20 دقیقه به دلیل تلاش های ناموفق قفل شد."); } else if (Result.RequiresTwoFactor) { return(RedirectToAction("SendCode")); } else { var ExternalResult = await _userManager.AddLoginAsync(user, info); if (ExternalResult.Succeeded) { await _signInManager.SignInAsync(user, false); return(RedirectToAction("Index", "Home")); } } } return(View("SignIn")); }
public async Task <ActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl) { if (User.Identity.IsAuthenticated) { return(RedirectToAction("Index", "Manage")); } if (ModelState.IsValid) { // Get the information about the user from the external login provider var info = await _authenticationManager.GetExternalLoginInfoAsync(); if (info == null) { return(View("ExternalLoginFailure")); } var user = new ApplicationUser { UserName = model.Email, Email = model.Email }; var result = await _userManager.CreateAsync(user); if (result.Succeeded) { result = await _userManager.AddLoginAsync(user.Id, info.Login); if (result.Succeeded) { await _signInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false); return(RedirectToLocal(returnUrl)); } } AddErrors(result); } ViewBag.ReturnUrl = returnUrl; return(View(model)); }
private async Task <ApplicationUser> CreateUser(FacebookUserCredentialsResponse facebookResponse) { ApplicationUser user = new ApplicationUser { UserName = facebookResponse.email, Email = facebookResponse.email }; IdentityResult result = await applicationUserManager.CreateAsync(user); if (result.Succeeded) { IdentityResult loginInfoResult = await applicationUserManager.AddLoginAsync(user, new UserLoginInfo("Facebook", facebookResponse.id, facebookResponse.name)); if (!loginInfoResult.Succeeded) { throw new Exception("Creating new user failed"); } } else { throw new Exception("Creating new user failed"); } return(user); }