- ResolvedMember record in Core/Models with DisplayName and Login - ISharePointGroupResolver interface with ResolveGroupsAsync contract - SharePointGroupResolver: CSOM group user loading + Graph transitive AAD resolution - Internal static helpers IsAadGroup, ExtractAadGroupId, StripClaims (all green unit tests) - Graceful error handling: exceptions return empty list per group, never throw - OrdinalIgnoreCase result dict; lazy Graph client creation on first AAD group
11 lines
586 B
C#
11 lines
586 B
C#
namespace SharepointToolbox.Core.Models;
|
|
|
|
/// <summary>
|
|
/// Represents a resolved leaf member of a SharePoint group or nested AAD group.
|
|
/// Used by <see cref="SharepointToolbox.Services.ISharePointGroupResolver"/> to return
|
|
/// transitive member lists for HTML report group expansion (Phase 17).
|
|
/// </summary>
|
|
/// <param name="DisplayName">The display name of the member (e.g. "Alice Smith").</param>
|
|
/// <param name="Login">The login / UPN of the member (e.g. "alice@contoso.com"), with claims prefix stripped.</param>
|
|
public record ResolvedMember(string DisplayName, string Login);
|