diff --git a/SharepointToolbox/Core/Models/ConsolidatedPermissionEntry.cs b/SharepointToolbox/Core/Models/ConsolidatedPermissionEntry.cs new file mode 100644 index 0000000..02e274d --- /dev/null +++ b/SharepointToolbox/Core/Models/ConsolidatedPermissionEntry.cs @@ -0,0 +1,21 @@ +namespace SharepointToolbox.Core.Models; + +/// +/// A consolidated permission row produced by grouping UserAccessEntry rows +/// that share the same (UserLogin, PermissionLevel, AccessType, GrantedThrough) key. +/// All distinct locations for that key are collected into . +/// +public record ConsolidatedPermissionEntry( + string UserDisplayName, + string UserLogin, + string PermissionLevel, + AccessType AccessType, + string GrantedThrough, + bool IsHighPrivilege, + bool IsExternalUser, + IReadOnlyList Locations +) +{ + /// Convenience count — equals Locations.Count. + public int LocationCount => Locations.Count; +} diff --git a/SharepointToolbox/Core/Models/LocationInfo.cs b/SharepointToolbox/Core/Models/LocationInfo.cs new file mode 100644 index 0000000..45801a0 --- /dev/null +++ b/SharepointToolbox/Core/Models/LocationInfo.cs @@ -0,0 +1,13 @@ +namespace SharepointToolbox.Core.Models; + +/// +/// Holds the five location-related fields extracted from a UserAccessEntry +/// when permission rows are merged into a consolidated entry. +/// +public record LocationInfo( + string SiteUrl, + string SiteTitle, + string ObjectTitle, + string ObjectUrl, + string ObjectType +);