37 lines
1.1 KiB
PHP
37 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Api;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Signature\SignatureBuilder;
|
|
use Illuminate\Http\JsonResponse;
|
|
use Illuminate\Http\Request;
|
|
|
|
class SignatureController extends Controller
|
|
{
|
|
/**
|
|
* GET /api/v1/signature?context=new|reply|forward|appointment&mailbox=adresse
|
|
* Réponse : { html, variant, template, generated_at }
|
|
*/
|
|
public function show(Request $request, SignatureBuilder $builder): JsonResponse
|
|
{
|
|
$data = $request->validate([
|
|
'context' => ['sometimes', 'in:new,reply,forward,appointment'],
|
|
'mailbox' => ['sometimes', 'nullable', 'email:rfc', 'max:254'],
|
|
]);
|
|
|
|
$result = $builder->build(
|
|
$request->attributes->get('directory_user'),
|
|
$data['context'] ?? 'new',
|
|
$data['mailbox'] ?? null,
|
|
);
|
|
|
|
if ($result === null) {
|
|
return response()->json(['error' => 'no_template'], 404);
|
|
}
|
|
|
|
return response()->json($result + ['generated_at' => now()->toIso8601String()])
|
|
->header('Cache-Control', 'private, no-store');
|
|
}
|
|
}
|