private async Task UpdateUserClaimsAsync(IndexViewModel model, TUser user) { var claims = await _userManager.GetClaimsAsync(user); var oldProfile = OpenIdClaimHelpers.ExtractProfileInfo(claims); var newProfile = new OpenIdProfile { Website = model.Website, StreetAddress = model.StreetAddress, Locality = model.Locality, PostalCode = model.PostalCode, Region = model.Region, Country = model.Country, FullName = model.Name, Profile = model.Profile }; var claimsToRemove = OpenIdClaimHelpers.ExtractClaimsToRemove(oldProfile, newProfile); var claimsToAdd = OpenIdClaimHelpers.ExtractClaimsToAdd(oldProfile, newProfile); var claimsToReplace = OpenIdClaimHelpers.ExtractClaimsToReplace(claims, newProfile); await _userManager.RemoveClaimsAsync(user, claimsToRemove); await _userManager.AddClaimsAsync(user, claimsToAdd); foreach (var pair in claimsToReplace) { await _userManager.ReplaceClaimAsync(user, pair.Item1, pair.Item2); } }
private async Task <IndexViewModel> BuildManageIndexViewModelAsync(TUser user) { var claims = await _userManager.GetClaimsAsync(user); var profile = OpenIdClaimHelpers.ExtractProfileInfo(claims); var model = new IndexViewModel { Username = user.UserName, Email = user.Email, PhoneNumber = user.PhoneNumber, IsEmailConfirmed = user.EmailConfirmed, StatusMessage = StatusMessage, Name = profile.FullName, Website = profile.Website, Profile = profile.Profile, Country = profile.Country, Region = profile.Region, PostalCode = profile.PostalCode, Locality = profile.Locality, StreetAddress = profile.StreetAddress }; return(model); }