/// <summary> /// Add a Login to an existing user. /// </summary> /// <param name="request">Instance of AddLoginRequest</param> /// <returns>Instance of AddLoginResponse</returns> public async Task <AddLoginResponse> AddLoginAsync(AddLoginRequest request) { AddLoginResponse response = new AddLoginResponse(); try { IdentityResult result = await this.UserManager.AddLoginAsync(request.UserId.ToString(), new UserLoginInfo(request.LoginProvider, request.ProviderKey)); if (!result.Succeeded) { response.AddErrors(result.Errors); response.Success = false; } else { response.Success = true; } } catch (Exception e) { response.Success = false; response.Errors.Add(e.Message); } return(response); }
/// <summary> /// Add a Login to an existing user. /// </summary> /// <param name="request">Instance of AddLoginRequest</param> /// <returns>Instance of AddLoginResponse</returns> public async Task<AddLoginResponse> AddLoginAsync(AddLoginRequest request) { AddLoginResponse response = new AddLoginResponse(); try { IdentityResult result = await this.UserManager.AddLoginAsync(request.UserId.ToString(), new UserLoginInfo(request.LoginProvider, request.ProviderKey)); if (!result.Succeeded) { response.AddErrors(result.Errors); response.Success = false; } else { response.Success = true; } } catch (Exception e) { response.Success = false; response.Errors.Add(e.Message); } return response; }
public async Task <ActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl) { if (User.Identity.IsAuthenticated) { return(RedirectToAction("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")); } CreateResponse createResponse = await this.Membership.CreateAsync(new CreateRequest() { UserName = model.UserName }); if (createResponse.Success) { AddLoginResponse addLoginResponse = await this.Membership.AddLoginAsync(new AddLoginRequest() { UserId = new Guid(createResponse.UserId.ToString()), LoginProvider = info.Login.LoginProvider, ProviderKey = info.Login.ProviderKey }); if (addLoginResponse.Success) { ClaimsIdentity identity = createResponse.ClaimIdentity.ConvertToClaimsIdentity(); SignInAsync(identity, IsPersistent: false); return(RedirectToLocal(returnUrl)); } else { AddErrors(addLoginResponse.Errors); } } AddErrors(createResponse.Errors); } ViewBag.ReturnUrl = returnUrl; return(View(model)); }
// // GET: /Account/LinkLoginCallback public async Task <ActionResult> LinkLoginCallback() { var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync(XsrfKey, User.Identity.GetUserId()); if (loginInfo == null) { return(RedirectToAction("Manage", new { Message = ManageMessageId.Error })); } AddLoginResponse response = await this.Membership.AddLoginAsync(new AddLoginRequest() { UserId = new Guid(User.Identity.GetUserId()), LoginProvider = loginInfo.Login.LoginProvider, ProviderKey = loginInfo.Login.ProviderKey, }); if (response.Success) { return(RedirectToAction("Manage")); } return(RedirectToAction("Manage", new { Message = ManageMessageId.Error })); }