auth tests
This commit is contained in:
130
backend/app/Http/Traits/ApiResponse.php
Normal file
130
backend/app/Http/Traits/ApiResponse.php
Normal file
@@ -0,0 +1,130 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Traits;
|
||||
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Pagination\LengthAwarePaginator;
|
||||
|
||||
/**
|
||||
* Risposte JSON standardizzate per i controller API.
|
||||
*
|
||||
* I messaggi sono presi da config/messages.php. Passando un $prefix si possono
|
||||
* usare messaggi specifici per risorsa (es. "user_roles.created"); senza prefix
|
||||
* si usano le chiavi generiche di primo livello.
|
||||
*/
|
||||
trait ApiResponse
|
||||
{
|
||||
/**
|
||||
* 200 — Lista paginata: { message, data, meta }.
|
||||
*/
|
||||
protected function paginatedCollectionResponse(LengthAwarePaginator $paginator, ?string $prefix = null): JsonResponse
|
||||
{
|
||||
return response()->json([
|
||||
'message' => config($prefix ? "messages.{$prefix}.index" : 'messages.index'),
|
||||
'data' => $paginator->items(),
|
||||
'meta' => [
|
||||
'current_page' => $paginator->currentPage(),
|
||||
'last_page' => $paginator->lastPage(),
|
||||
'per_page' => $paginator->perPage(),
|
||||
'total' => $paginator->total(),
|
||||
],
|
||||
], 200);
|
||||
}
|
||||
|
||||
/**
|
||||
* 200 — Collezione di risorse.
|
||||
*/
|
||||
protected function collectionResponse(mixed $collection, ?string $prefix = null): JsonResponse
|
||||
{
|
||||
return response()->json([
|
||||
'message' => config($prefix ? "messages.{$prefix}.index" : 'messages.index'),
|
||||
'data' => $collection,
|
||||
], 200);
|
||||
}
|
||||
|
||||
/**
|
||||
* 200 — Singola risorsa.
|
||||
*/
|
||||
protected function okResponse(mixed $data, ?string $prefix = null): JsonResponse
|
||||
{
|
||||
return response()->json([
|
||||
'message' => config($prefix ? "messages.{$prefix}.show" : 'messages.show'),
|
||||
'data' => $data,
|
||||
], 200);
|
||||
}
|
||||
|
||||
/**
|
||||
* 201 — Risorsa creata.
|
||||
*/
|
||||
protected function createdResponse(mixed $model, ?string $prefix = null): JsonResponse
|
||||
{
|
||||
return response()->json([
|
||||
'message' => config($prefix ? "messages.{$prefix}.created" : 'messages.created'),
|
||||
'data' => $model,
|
||||
], 201);
|
||||
}
|
||||
|
||||
/**
|
||||
* 200 — Risorsa aggiornata.
|
||||
*/
|
||||
protected function updatedResponse(mixed $model, ?string $prefix = null): JsonResponse
|
||||
{
|
||||
return response()->json([
|
||||
'message' => config($prefix ? "messages.{$prefix}.updated" : 'messages.updated'),
|
||||
'data' => $model,
|
||||
], 200);
|
||||
}
|
||||
|
||||
/**
|
||||
* 200 — Risorsa eliminata.
|
||||
*/
|
||||
protected function deletedResponse(?string $prefix = null): JsonResponse
|
||||
{
|
||||
return response()->json([
|
||||
'message' => config($prefix ? "messages.{$prefix}.deleted" : 'messages.deleted'),
|
||||
], 200);
|
||||
}
|
||||
|
||||
/**
|
||||
* 200 — Risorsa ripristinata (soft delete restore).
|
||||
*/
|
||||
protected function restoredResponse(mixed $model, ?string $prefix = null): JsonResponse
|
||||
{
|
||||
return response()->json([
|
||||
'message' => config($prefix ? "messages.{$prefix}.restored" : 'messages.restored'),
|
||||
'data' => $model,
|
||||
], 200);
|
||||
}
|
||||
|
||||
/**
|
||||
* 409 — Conflitto: operazione bloccata (es. risorsa in uso).
|
||||
*/
|
||||
protected function conflictResponse(string $message): JsonResponse
|
||||
{
|
||||
return response()->json([
|
||||
'message' => $message,
|
||||
'in_use' => true,
|
||||
], 409);
|
||||
}
|
||||
|
||||
/**
|
||||
* Risposta con solo messaggio — chiave config es. "auth.login_success".
|
||||
*/
|
||||
protected function messageResponse(string $configKey, int $status = 200): JsonResponse
|
||||
{
|
||||
return response()->json([
|
||||
'message' => config("messages.{$configKey}"),
|
||||
], $status);
|
||||
}
|
||||
|
||||
/**
|
||||
* Risposta con messaggio e dati — chiave config es. "auth.login_success".
|
||||
*/
|
||||
protected function dataResponse(mixed $data, string $configKey, int $status = 200): JsonResponse
|
||||
{
|
||||
return response()->json([
|
||||
'message' => config("messages.{$configKey}"),
|
||||
'data' => $data,
|
||||
], $status);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user