Example #1
0
        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;
        }