static AccountInfo BuildAccountInfo(IUserInfoResponse userInfo) { var avatarUrl = GetClaim(userInfo, CustomClaimTypes.AvatarUrl); var updatedAt = GetClaim(userInfo, CustomClaimTypes.AvatarUpdatedAt); return new AccountInfo { Id = Guid.Parse(GetClaim(userInfo, "sub")), Roles = userInfo.Claims.Where(x => x.Item1 == "role").Select(x => x.Item2).ToList(), DisplayName = GetClaim(userInfo, "nickname"), UserName = GetClaim(userInfo, "preferred_username"), AvatarURL = avatarUrl, HasAvatar = GetClaim(userInfo, CustomClaimTypes.HasAvatar) == "true", AvatarUpdatedAt = updatedAt == null ? 0 : long.Parse(updatedAt), EmailMd5 = GetClaim(userInfo, CustomClaimTypes.EmailMd5) }; }
static string GetClaim(IUserInfoResponse userInfo, string claimType) { var claim = userInfo.Claims.FirstOrDefault(x => x.Item1 == claimType); return claim?.Item2; }