public async Task GetProfileDataAsync(ProfileDataRequestContext context) { var sub = context.Subject.Identity.GetSubjectId(); var user = await _userManager.FindByIdAsync(sub); var principal = await _claimsFactory.CreateAsync(user); var userInfo = _regHelper.GetUserInfo(user.Id); var userInventory = _regHelper.GetUserInventory(user.Id); var claims = principal.Claims.ToList(); claims = claims.Where(claim => context.RequestedClaimTypes.Contains(claim.Type)).ToList(); // Add custom claims in token here based on user properties or any other source claims.Add(new Claim("is_active", user.IsActive.ToString() ?? "false")); claims.Add(new Claim("isOnline", user.IsOnline.ToString() ?? "false")); if (userInfo != null) { claims.Add(new Claim("gender", userInfo.Gender.ToString())); claims.Add(new Claim("dob", userInfo.DOB.ToString())); claims.Add(new Claim("age", userInfo.Age.ToString())); } if (userInventory != null) { claims.Add(new Claim("xp", userInventory.XP.ToString())); claims.Add(new Claim("wincCount", userInventory.WincCount.ToString())); claims.Add(new Claim("receivedWincCount", userInventory.ReceivedWincCount.ToString())); claims.Add(new Claim("heartCount", userInventory.HeartCount.ToString())); claims.Add(new Claim("receivedHeartCount", userInventory.ReceivedHeartsCount.ToString())); } context.IssuedClaims = claims; }