public async Task<IEnumerable<Claim>> GetProfileDataAsync(ProfileDataRequest request) { var user = await directoryContext.FindUserByNameAsync(request.Subject.Identity.Name); return GetClaimsForResult(user); }
/// <summary> /// Go and get all claims for this user. /// </summary> /// <param name="request"></param> /// <returns></returns> public async Task<IEnumerable<Claim>> GetProfileDataAsync(ProfileDataRequest request) { var subject = request.Subject; var requestedClaimTypes = request.RequestedClaimTypes; if (subject == null) throw new ArgumentNullException("subject"); var acct = await manager.FindByIdAsync(subject.FindFirst(Core.Constants.ClaimTypes.Subject).Value); if (acct == null) { throw new ArgumentException("Invalid subject identifier"); } var claims = await GetClaimsFromAccount(acct); if (requestedClaimTypes != null && requestedClaimTypes.Any()) { claims = claims.Where(x => requestedClaimTypes.Contains(x.Type)); } return claims; }