Advertisement
Guest User

Untitled

a guest
Jun 18th, 2019
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.58 KB | None | 0 0
  1. // POST api/Account/AddExternalLogin
  2. [Route("AddExternalLogin")]
  3. public async Task<IHttpActionResult> AddExternalLogin(AddExternalLoginBindingModel model)
  4. {
  5. if (!ModelState.IsValid)
  6. {
  7. return BadRequest(ModelState);
  8. }
  9.  
  10. Authentication.SignOut(DefaultAuthenticationTypes.ExternalCookie);
  11.  
  12. AuthenticationTicket ticket = AccessTokenFormat.Unprotect(model.ExternalAccessToken);
  13.  
  14. if (ticket == null || ticket.Identity == null || (ticket.Properties != null
  15. && ticket.Properties.ExpiresUtc.HasValue
  16. && ticket.Properties.ExpiresUtc.Value < DateTimeOffset.UtcNow))
  17. {
  18. return BadRequest("External login failure.");
  19. }
  20.  
  21. ExternalLoginData externalData = ExternalLoginData.FromIdentity(ticket.Identity);
  22.  
  23.  
  24.  
  25.  
  26. if (externalData == null)
  27. {
  28. return BadRequest("The external login is already associated with an account.");
  29. }
  30.  
  31.  
  32.  
  33. IdentityResult result = await UserManager.AddLoginAsync(User.Identity.GetUserId(),
  34. new UserLoginInfo(externalData.LoginProvider, externalData.ProviderKey));
  35.  
  36. await UserManager.AddClaimAsync(ticket.Identity.GetUserId(), new Claim(ClaimTypes.Role, "Admin123"));
  37.  
  38.  
  39.  
  40. if (!result.Succeeded)
  41. {
  42. return GetErrorResult(result);
  43. }
  44.  
  45. return Ok();
  46. }
  47.  
  48. await UserManager.AddClaimAsync(ticket.Identity.GetUserId(), new Claim(ClaimTypes.Role, "Admin123"));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement