| | | 1 | | using ArturRios.Mediator.Query; |
| | | 2 | | |
| | | 3 | | namespace ArturRios.Heimdall.Query.Output; |
| | | 4 | | |
| | | 5 | | /// <summary> |
| | | 6 | | /// The minimum a person picker needs: who they are and how to recognise them (FR-PE-12, |
| | | 7 | | /// FR-PE-13). |
| | | 8 | | /// </summary> |
| | | 9 | | /// <remarks> |
| | | 10 | | /// A separate type from <see cref="PersonOutput" />, and deliberately so. UC-07's visibility rule |
| | | 11 | | /// otherwise lets a Scope Admin see only the administrators co-owning their own scopes, and |
| | | 12 | | /// UI-14 needs them to find one they share no scope with — so this listing's audience is wider |
| | | 13 | | /// than that rule. Three fields is what makes the widening safe: a Scope Admin learns that an |
| | | 14 | | /// administrator with a given name and address exists, which they can already establish by |
| | | 15 | | /// submitting that address to <c>POST /api/scopes/{id}/owners</c> and reading the duplicate-email |
| | | 16 | | /// refusal. Reusing <see cref="PersonOutput" /> would instead hand them <c>Role</c>, |
| | | 17 | | /// <c>OwnedScopeIds</c>, <c>EmailVerified</c>, <c>TwoFactorEnabled</c>, and the timestamps. |
| | | 18 | | /// </remarks> |
| | | 19 | | public class PersonSummaryOutput : QueryOutput |
| | | 20 | | { |
| | | 21 | | /// <summary>Public identifier of the person.</summary> |
| | 155 | 22 | | public Guid Id { get; set; } |
| | | 23 | | |
| | | 24 | | /// <summary>Full name.</summary> |
| | 209 | 25 | | public string Name { get; set; } = string.Empty; |
| | | 26 | | |
| | | 27 | | /// <summary>Email address.</summary> |
| | 181 | 28 | | public string Email { get; set; } = string.Empty; |
| | | 29 | | } |