private async Task RefreshClaims(string userId) { var identity = (ClaimsIdentity)User.Identity; var context = Request.GetOwinContext(); var claims = await ProfileClient.GetClaims(userId); foreach (var claim in identity.Claims.Where(x => claims.Any(y => y.Type == x.Type)).ToList()) { identity.RemoveClaim(claim); } identity.AddClaims(claims); context.Authentication.SignOut(DefaultAuthenticationTypes.ExternalCookie); context.Authentication.SignIn(identity); }
private async Task InitViewBag() { ViewBag.ConnectUrls = GetFederationManagementUrls(ViewBag.Claims, ManagementDisconnectedAccountType, "connect"); ViewBag.DisconnectUrls = GetFederationManagementUrls(ViewBag.Claims, ManagementConnectedAccountType, "disconnect"); try { var claims = await ProfileClient.GetClaims(User.Identity.GetUserId()); var profile = new UpdateProfileClaimsViewModel { Name = claims.FirstOrDefault(x => x.Type == Common.Consts.DefaultClaimNamespace + "name")?.Value ?? "", Address = claims.FirstOrDefault(x => x.Type == Common.Consts.DefaultClaimNamespace + "address")?.Value ?? "" }; ViewBag.Profile = profile; } catch (ApiException) { ViewBag.Profile = new UpdateProfileClaimsViewModel { Address = "", Name = "" }; } }