Hide assignee metadata when no visible assignments exist

This commit is contained in:
2026-04-24 09:32:15 +00:00
parent bf0e50464a
commit 627070e974
3 changed files with 37 additions and 3 deletions
@@ -17,11 +17,14 @@ class UserAssignedTicketController extends ApiController
public function __invoke(Request $request, User $user): JsonResponse
{
$viewer = $this->authenticatedUser($request);
$assignedTicketsByProject = $this->listAssignedTicketsByVisibleProject->handle($viewer, $user);
return response()->json([
'data' => $this->listAssignedTicketsByVisibleProject->handle($viewer, $user),
'data' => $assignedTicketsByProject,
'meta' => [
'assignee' => UserResource::make($user)->resolve(),
'assignee' => $assignedTicketsByProject === []
? null
: UserResource::make($user)->resolve(),
],
]);
}
+8 -1
View File
@@ -1844,7 +1844,14 @@
"type": "object",
"properties": {
"assignee": {
"$ref": "#/components/schemas/User"
"oneOf": [
{
"$ref": "#/components/schemas/User"
},
{
"type": "null"
}
]
}
},
"required": ["assignee"]
@@ -77,4 +77,28 @@ class AssignedTicketsApiTest extends TestCase
->assertJsonCount(1, 'data.1.tickets')
->assertJsonCount(2, 'data');
}
public function test_assignee_metadata_is_hidden_when_no_visible_assigned_tickets_exist(): void
{
$viewer = User::factory()->create();
$assignee = User::factory()->create([
'email' => 'assignee@example.test',
'name' => 'Hidden Assignee',
]);
$hiddenProject = Project::factory()->create();
Ticket::factory()->create([
'assignee_user_id' => $assignee->id,
'project_id' => $hiddenProject->id,
'sequence_number' => 42,
'ticket_key' => 'HID-42',
'title' => 'Invisible assignment',
]);
$this->withApplicationKey($viewer)
->getJson(route('api.users.assigned-tickets', $assignee))
->assertOk()
->assertJsonPath('data', [])
->assertJsonPath('meta.assignee', null);
}
}