This commit is contained in:
77
api/app/Http/Controllers/RestPkiController.php
Normal file
77
api/app/Http/Controllers/RestPkiController.php
Normal file
@@ -0,0 +1,77 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Exceptions\RestPki\CertificadoInvalidException;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use Lacuna\RestPki\PadesMeasurementUnits;
|
||||
use Lacuna\RestPki\PadesSignatureFinisher2;
|
||||
use Lacuna\RestPki\PadesSignatureStarter;
|
||||
use Lacuna\RestPki\RestPkiClient;
|
||||
use Lacuna\RestPki\StandardSecurityContexts;
|
||||
use Lacuna\RestPki\StandardSignaturePolicies;
|
||||
|
||||
class RestPkiController extends Controller
|
||||
{
|
||||
private $client;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->client = new RestPkiClient(env('PKI_ENDPOINT_URL'), env('PKI_ACCESS_TOKEN'));
|
||||
}
|
||||
|
||||
public function start(Request $request)
|
||||
{
|
||||
$visualRepresentation = [
|
||||
'text' => [
|
||||
'text' => 'Assinado eletronicamente por {{signerName}} ({{signerNationalId}})',
|
||||
'fontSize' => 8.0,
|
||||
'includeSigningTime' => true,
|
||||
],
|
||||
'position' => [
|
||||
'pageNumber' => -1,
|
||||
'auto' => [
|
||||
'container' => [
|
||||
'left' => 5.5,
|
||||
'right' => 1.5,
|
||||
'bottom' => 5.5,
|
||||
'height' => 15.94,
|
||||
],
|
||||
'signatureRectangleSize' => [
|
||||
'height' => 15.94,
|
||||
'width' => 600.0,
|
||||
],
|
||||
'rowSpacing' => 0.0,
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
$signatureStarter = new PadesSignatureStarter($this->client);
|
||||
$signatureStarter->signaturePolicy = StandardSignaturePolicies::PADES_BASIC_WITHOUT_LTV;
|
||||
$signatureStarter->securityContext = StandardSecurityContexts::PKI_BRAZIL;
|
||||
$signatureStarter->measurementUnits = PadesMeasurementUnits::PDFPOINTS;
|
||||
$signatureStarter->visualRepresentation = $visualRepresentation;
|
||||
$signatureStarter->setPdfToSignFromContentBase64($request->base64);
|
||||
|
||||
$token = $signatureStarter->startWithWebPki();
|
||||
|
||||
return response()->json(['token' => $token], Response::HTTP_OK);
|
||||
}
|
||||
|
||||
public function finish(Request $request)
|
||||
{
|
||||
try {
|
||||
$signatureFinisher = new PadesSignatureFinisher2($this->client);
|
||||
$signatureFinisher->token = $request->token;
|
||||
|
||||
$signatureResult = $signatureFinisher->finish();
|
||||
|
||||
return response()->json($signatureResult->getContentBase64(), Response::HTTP_OK);
|
||||
|
||||
} catch (\Throwable $e) {
|
||||
|
||||
throw new CertificadoInvalidException;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user