Fixed in f77a457 — Maintainer of this person sees all albums, non-maintainer gets User-level visibility filter.
Fixed in 1b444da — maintainer scope check with IsMaintainerOf on album's PersonOwnerId.
Fixed in 1b444da — Authorize now includes Maintainer.
Fixed in c232641 — BulkUpdate now scopes Maintainer to albums of persons they maintain, returns Forbid if none match.
Fixed in 747ad77 — Maintainer of the cosplayer sees all non-deleted assets, otherwise User-level visibility filter.
Fixed in 9323111 — same threshold change (>= Maintainer) for asset Visibility.
Fixed in fe33fe2 — Added ProtectedAssets count, PrivateAssets now counts only EVisibility.Private.
Fixed in bbb2ed8 — default changed to EVisibility.Private.
Fixed in 08c3890 — now uses PagedParametersDto.MaxPageSize const instead of hardcoded 150.
Fixed in 08c3890 — same.
MediaController already passes user.AccessLevel to the media repository. The repository handles visibility filtering for Maintainer (same as User: Public + Protected + own uploads). Person-level maintainer override for media serving requires the asset→album→person chain check which would need PersonRepository injection — deferred.
Fixed in c64c194 — Maintainer now sees Public + Protected + persons they maintain, not all persons.
Fixed in 0673017 — switched to switch expression.
Fixed in c64c194 — same scoping applied to SearchQuery.
Fixed in 0673017 — same.
Fixed in 9323111 — Maintainer can now see Visibility field.
Fixed in a449c79 — EAccessLevel enum replaces bool parameter. Admin sees all, Curator sees own deleted+non-deleted, Maintainer/User see non-deleted only + visibility filter.
Fixed in 0673017 — both methods now use switch expressions.
Fixed in 1b444da — Authorize now includes Maintainer.