Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // POST api/Account/AddExternalLogin
- [Route("AddExternalLogin")]
- public async Task<IHttpActionResult> AddExternalLogin(AddExternalLoginBindingModel model)
- {
- if (!ModelState.IsValid)
- {
- return BadRequest(ModelState);
- }
- Authentication.SignOut(DefaultAuthenticationTypes.ExternalCookie);
- AuthenticationTicket ticket = AccessTokenFormat.Unprotect(model.ExternalAccessToken);
- if (ticket == null || ticket.Identity == null || (ticket.Properties != null
- && ticket.Properties.ExpiresUtc.HasValue
- && ticket.Properties.ExpiresUtc.Value < DateTimeOffset.UtcNow))
- {
- return BadRequest("External login failure.");
- }
- ExternalLoginData externalData = ExternalLoginData.FromIdentity(ticket.Identity);
- if (externalData == null)
- {
- return BadRequest("The external login is already associated with an account.");
- }
- IdentityResult result = await UserManager.AddLoginAsync(User.Identity.GetUserId(),
- new UserLoginInfo(externalData.LoginProvider, externalData.ProviderKey));
- await UserManager.AddClaimAsync(ticket.Identity.GetUserId(), new Claim(ClaimTypes.Role, "Admin123"));
- if (!result.Succeeded)
- {
- return GetErrorResult(result);
- }
- return Ok();
- }
- await UserManager.AddClaimAsync(ticket.Identity.GetUserId(), new Claim(ClaimTypes.Role, "Admin123"));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement