Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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);
        }