From fd46bbb3996426def90f6c3988564a1734b6eb98 Mon Sep 17 00:00:00 2001 From: cherednik Date: Thu, 9 Jan 2025 17:15:30 +0400 Subject: [PATCH 01/20] =?UTF-8?q?DD-3602:=20[BACK].=20[=D0=94=D0=BE=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=BD=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20=D0=B2?= =?UTF-8?q?=D0=BE=D0=B4=D0=B8=D1=82=D0=B5=D0=BB=D1=8E=20=D1=81=20=D0=9A?= =?UTF-8?q?=D0=AD=D0=9F]=20-=20[=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D1=82=D1=8C=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BA=D1=83=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=B0=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20=D0=90=D0=9F=D0=98=20?= =?UTF-8?q?=D0=94=D0=B8=D0=B0=D0=B4=D0=BE=D0=BA]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/.env | 13 +++++- backend/config/routes.yaml | 8 ++-- backend/config/services.yaml | 2 +- backend/src/Controller/.gitignore | 0 backend/src/Entity/.gitignore | 0 backend/src/Repository/.gitignore | 0 backend/src/{ => SignDocument}/Api/Api.php | 3 +- .../src/{ => SignDocument}/Api/ApiParams.php | 2 +- .../Api/Request/DigitalSignatureRequest.php | 13 ++++++ .../Api/Request/SignRequest.php | 2 +- .../Controller/DigitalSignatureController.php | 32 +++++++++++++ .../Controller/SignController.php | 8 ++-- .../Services}/DevSignService.php | 2 +- .../Services/DigitalSignatureService.php | 45 +++++++++++++++++++ .../Services}/ProdSignService.php | 2 +- .../RemoveExistingDocumentService.php | 18 ++++++++ .../Services}/SignService.php | 30 +++++-------- 17 files changed, 144 insertions(+), 36 deletions(-) delete mode 100644 backend/src/Controller/.gitignore delete mode 100644 backend/src/Entity/.gitignore delete mode 100644 backend/src/Repository/.gitignore rename backend/src/{ => SignDocument}/Api/Api.php (97%) rename backend/src/{ => SignDocument}/Api/ApiParams.php (80%) create mode 100644 backend/src/SignDocument/Api/Request/DigitalSignatureRequest.php rename backend/src/{ => SignDocument}/Api/Request/SignRequest.php (83%) create mode 100644 backend/src/SignDocument/Controller/DigitalSignatureController.php rename backend/src/{ => SignDocument}/Controller/SignController.php (85%) rename backend/src/{ => SignDocument/Services}/DevSignService.php (83%) create mode 100644 backend/src/SignDocument/Services/DigitalSignatureService.php rename backend/src/{ => SignDocument/Services}/ProdSignService.php (94%) create mode 100644 backend/src/SignDocument/Services/RemoveExistingDocumentService.php rename backend/src/{ => SignDocument/Services}/SignService.php (62%) diff --git a/backend/.env b/backend/.env index 5784151..ca3f4c9 100644 --- a/backend/.env +++ b/backend/.env @@ -12,4 +12,15 @@ DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=16&ch ###< doctrine/doctrine-bundle ### DOT_DOT_URL='http://dot-dot.local' -API_TOKEN='secret' \ No newline at end of file +API_TOKEN='secret' + +###> KONTUR_DIADOC### +API_KONTUR_DIADOC_END_POINT_URL=https://diadoc-api.kontur.ru +API_KONTUR_DIADOC_API_TOKEN=API-3701ccdb-7bdf-4f29-bbe0-3a0278eee913 +API_KONTUR_DIADOC_LOGIN=LOGIN +API_KONTUR_DIADOC_PASSWORD=PASSWORD +###> KONTUR_DIADOC_POST_MESSAGE_DIRECTION### +API_KONTUR_DIADOC_PMD_BOX_ID=c1a0d340-a481-49b2-ba21-d51dea59df55 +API_KONTUR_DIADOC_PMD_FROM_DEPT_ID=00000000-0000-0000-0000-000000000000 +API_KONTUR_DIADOC_PMD_TO_DEPT_ID=da0f3b33-ef70-41e9-8e9e-fb431a891ef4 +###< KONTUR_DIADOC### \ No newline at end of file diff --git a/backend/config/routes.yaml b/backend/config/routes.yaml index 41ef814..ed04f5a 100644 --- a/backend/config/routes.yaml +++ b/backend/config/routes.yaml @@ -1,5 +1,5 @@ -controllers: +controllers_sign_document: resource: - path: ../src/Controller/ - namespace: App\Controller - type: attribute + path: ../src/SignDocument/Controller/ + namespace: App\SignDocument\Controller + type: attribute \ No newline at end of file diff --git a/backend/config/services.yaml b/backend/config/services.yaml index aede265..8803408 100644 --- a/backend/config/services.yaml +++ b/backend/config/services.yaml @@ -28,6 +28,6 @@ services: GuzzleHttp\Client: '@guzzle.http_client' - App\Api\ApiParams: + App\SignDocument\Api\ApiParams: arguments: $endPointUrl: '%env(DOT_DOT_URL)%' \ No newline at end of file diff --git a/backend/src/Controller/.gitignore b/backend/src/Controller/.gitignore deleted file mode 100644 index e69de29..0000000 diff --git a/backend/src/Entity/.gitignore b/backend/src/Entity/.gitignore deleted file mode 100644 index e69de29..0000000 diff --git a/backend/src/Repository/.gitignore b/backend/src/Repository/.gitignore deleted file mode 100644 index e69de29..0000000 diff --git a/backend/src/Api/Api.php b/backend/src/SignDocument/Api/Api.php similarity index 97% rename from backend/src/Api/Api.php rename to backend/src/SignDocument/Api/Api.php index 0ad4285..e3404b0 100644 --- a/backend/src/Api/Api.php +++ b/backend/src/SignDocument/Api/Api.php @@ -2,11 +2,10 @@ declare(strict_types=1); -namespace App\Api; +namespace App\SignDocument\Api; use App\Infrastructure\External\Api\AbstractApi; use App\Infrastructure\External\Api\BinaryStringFileResult; -use GuzzleHttp\Psr7\Request; use GuzzleHttp\RequestOptions; class Api extends AbstractApi diff --git a/backend/src/Api/ApiParams.php b/backend/src/SignDocument/Api/ApiParams.php similarity index 80% rename from backend/src/Api/ApiParams.php rename to backend/src/SignDocument/Api/ApiParams.php index f920f32..044c612 100644 --- a/backend/src/Api/ApiParams.php +++ b/backend/src/SignDocument/Api/ApiParams.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace App\Api; +namespace App\SignDocument\Api; class ApiParams { diff --git a/backend/src/SignDocument/Api/Request/DigitalSignatureRequest.php b/backend/src/SignDocument/Api/Request/DigitalSignatureRequest.php new file mode 100644 index 0000000..8fc03da --- /dev/null +++ b/backend/src/SignDocument/Api/Request/DigitalSignatureRequest.php @@ -0,0 +1,13 @@ +server->get('HTTP_AUTHORIZATION'); + + return new JsonResponse($this->digitalSignatureService->getSignature($digitalSignatureRequest, $token)); + } + +} \ No newline at end of file diff --git a/backend/src/Controller/SignController.php b/backend/src/SignDocument/Controller/SignController.php similarity index 85% rename from backend/src/Controller/SignController.php rename to backend/src/SignDocument/Controller/SignController.php index c7822b7..0dd1f21 100644 --- a/backend/src/Controller/SignController.php +++ b/backend/src/SignDocument/Controller/SignController.php @@ -2,15 +2,15 @@ declare(strict_types=1); -namespace App\Controller; +namespace App\SignDocument\Controller; -use App\Api\Request\SignRequest; -use App\SignService; +use App\SignDocument\Api\Request\SignRequest; +use App\SignDocument\Services\SignService; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\Routing\Annotation\Route; class SignController extends AbstractController { diff --git a/backend/src/DevSignService.php b/backend/src/SignDocument/Services/DevSignService.php similarity index 83% rename from backend/src/DevSignService.php rename to backend/src/SignDocument/Services/DevSignService.php index d9a8dc8..ef8653a 100644 --- a/backend/src/DevSignService.php +++ b/backend/src/SignDocument/Services/DevSignService.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace App; +namespace App\SignDocument\Services; class DevSignService { diff --git a/backend/src/SignDocument/Services/DigitalSignatureService.php b/backend/src/SignDocument/Services/DigitalSignatureService.php new file mode 100644 index 0000000..5b5744a --- /dev/null +++ b/backend/src/SignDocument/Services/DigitalSignatureService.php @@ -0,0 +1,45 @@ +apiToken) { + throw new AccessDeniedHttpException('Доступ запрещен'); + } + + $this->api->apiParams = $this->apiParams; + + try { + $document = $this->api->download($request->url, $token); + + exec(sprintf('cp %s %s.pdf', $document->tempFileName, $document->tempFileName)); + $signature = exec(sprintf('cryptcp -sign -detached -der %s', $document->tempFileName)); + + $response = base64_encode($signature); + + $this->removeExistingDocumentService->removeExistingDocument($document); + + return $response; + } catch (Exception $e) { + throw new RuntimeException($e->getMessage()); + } + } +} \ No newline at end of file diff --git a/backend/src/ProdSignService.php b/backend/src/SignDocument/Services/ProdSignService.php similarity index 94% rename from backend/src/ProdSignService.php rename to backend/src/SignDocument/Services/ProdSignService.php index 3207646..0a69756 100644 --- a/backend/src/ProdSignService.php +++ b/backend/src/SignDocument/Services/ProdSignService.php @@ -3,7 +3,7 @@ declare(strict_types=1); -namespace App; +namespace App\SignDocument\Services; class ProdSignService diff --git a/backend/src/SignDocument/Services/RemoveExistingDocumentService.php b/backend/src/SignDocument/Services/RemoveExistingDocumentService.php new file mode 100644 index 0000000..0020cb6 --- /dev/null +++ b/backend/src/SignDocument/Services/RemoveExistingDocumentService.php @@ -0,0 +1,18 @@ +tempFileName)) { + unlink($document->tempFileName); + } + } +} \ No newline at end of file diff --git a/backend/src/SignService.php b/backend/src/SignDocument/Services/SignService.php similarity index 62% rename from backend/src/SignService.php rename to backend/src/SignDocument/Services/SignService.php index 5a3b44e..5a981f4 100644 --- a/backend/src/SignService.php +++ b/backend/src/SignDocument/Services/SignService.php @@ -2,27 +2,24 @@ declare(strict_types=1); -namespace App; +namespace App\SignDocument\Services; -use App\Api\Api; -use App\Api\ApiParams; -use App\Api\Request\SignRequest; -use App\Infrastructure\External\Api\BinaryStringFileResult; +use App\SignDocument\Api\Api; +use App\SignDocument\Api\ApiParams; +use App\SignDocument\Api\Request\SignRequest; use Exception; use RuntimeException; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; class SignService { - private DevSignService $devSignService; - private ProdSignService $prodSignService; - public function __construct( - private Api $api, - private ApiParams $apiParams + private readonly Api $api, + private readonly ApiParams $apiParams, + private readonly DevSignService $devSignService, + private readonly ProdSignService $prodSignService, + private readonly RemoveExistingDocumentService $removeExistingDocumentService, ){ - $this->devSignService = new DevSignService(); - $this->prodSignService = new ProdSignService(); } public function signDocument(SignRequest $request,string $token): array { @@ -39,7 +36,7 @@ class SignService $response = $this->api->send($token, $document->tempFileName . '_sign.pdf', $request->batch); - $this->removeExistingDocument($document); + $this->removeExistingDocumentService->removeExistingDocument($document); return $response; } catch (Exception $e) { @@ -54,11 +51,4 @@ class SignService 'prod' => $this->prodSignService->sign($documentUrl), }; } - - private function removeExistingDocument(BinaryStringFileResult $document): void - { - if (file_exists($document->tempFileName)) { - unlink($document->tempFileName); - } - } } \ No newline at end of file From 6e87f37ad348d798c4b50364787a054145d99a34 Mon Sep 17 00:00:00 2001 From: cherednik Date: Thu, 9 Jan 2025 17:22:36 +0400 Subject: [PATCH 02/20] =?UTF-8?q?DD-3602:=20[BACK].=20[=D0=94=D0=BE=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=BD=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20=D0=B2?= =?UTF-8?q?=D0=BE=D0=B4=D0=B8=D1=82=D0=B5=D0=BB=D1=8E=20=D1=81=20=D0=9A?= =?UTF-8?q?=D0=AD=D0=9F]=20-=20[=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D1=82=D1=8C=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BA=D1=83=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=B0=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20=D0=90=D0=9F=D0=98=20?= =?UTF-8?q?=D0=94=D0=B8=D0=B0=D0=B4=D0=BE=D0=BA]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/Entity/.gitignore | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 backend/src/Entity/.gitignore diff --git a/backend/src/Entity/.gitignore b/backend/src/Entity/.gitignore new file mode 100644 index 0000000..e69de29 From 4947b8ea1903d5cfac1123401d35f3833eab7fba Mon Sep 17 00:00:00 2001 From: cherednik Date: Thu, 9 Jan 2025 18:37:38 +0400 Subject: [PATCH 03/20] =?UTF-8?q?DD-3602:=20[BACK].=20[=D0=94=D0=BE=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=BD=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20=D0=B2?= =?UTF-8?q?=D0=BE=D0=B4=D0=B8=D1=82=D0=B5=D0=BB=D1=8E=20=D1=81=20=D0=9A?= =?UTF-8?q?=D0=AD=D0=9F]=20-=20[=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D1=82=D1=8C=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BA=D1=83=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=B0=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20=D0=90=D0=9F=D0=98=20?= =?UTF-8?q?=D0=94=D0=B8=D0=B0=D0=B4=D0=BE=D0=BA]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/SignDocument/Services/DigitalSignatureService.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/src/SignDocument/Services/DigitalSignatureService.php b/backend/src/SignDocument/Services/DigitalSignatureService.php index 5b5744a..811416b 100644 --- a/backend/src/SignDocument/Services/DigitalSignatureService.php +++ b/backend/src/SignDocument/Services/DigitalSignatureService.php @@ -31,9 +31,9 @@ class DigitalSignatureService $document = $this->api->download($request->url, $token); exec(sprintf('cp %s %s.pdf', $document->tempFileName, $document->tempFileName)); - $signature = exec(sprintf('cryptcp -sign -detached -der %s', $document->tempFileName)); + exec(sprintf('cryptcp -sign -detached -der %s', $document->tempFileName . '.pdf')); - $response = base64_encode($signature); + $response = base64_encode($document->tempFileName . '.sgn'); $this->removeExistingDocumentService->removeExistingDocument($document); From a16b8e45fbf5a47bddbc5b5ca630a367ae8ee164 Mon Sep 17 00:00:00 2001 From: cherednik Date: Thu, 9 Jan 2025 18:39:40 +0400 Subject: [PATCH 04/20] =?UTF-8?q?DD-3602:=20[BACK].=20[=D0=94=D0=BE=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=BD=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20=D0=B2?= =?UTF-8?q?=D0=BE=D0=B4=D0=B8=D1=82=D0=B5=D0=BB=D1=8E=20=D1=81=20=D0=9A?= =?UTF-8?q?=D0=AD=D0=9F]=20-=20[=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D1=82=D1=8C=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BA=D1=83=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=B0=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20=D0=90=D0=9F=D0=98=20?= =?UTF-8?q?=D0=94=D0=B8=D0=B0=D0=B4=D0=BE=D0=BA]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/SignDocument/Services/DigitalSignatureService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/SignDocument/Services/DigitalSignatureService.php b/backend/src/SignDocument/Services/DigitalSignatureService.php index 811416b..2a46955 100644 --- a/backend/src/SignDocument/Services/DigitalSignatureService.php +++ b/backend/src/SignDocument/Services/DigitalSignatureService.php @@ -33,7 +33,7 @@ class DigitalSignatureService exec(sprintf('cp %s %s.pdf', $document->tempFileName, $document->tempFileName)); exec(sprintf('cryptcp -sign -detached -der %s', $document->tempFileName . '.pdf')); - $response = base64_encode($document->tempFileName . '.sgn'); + $response = base64_encode(file_get_contents($document->tempFileName . '.sgn')); $this->removeExistingDocumentService->removeExistingDocument($document); From 09ab8eb13c1f06c670b0d5f1654b9f90ee5cd3a2 Mon Sep 17 00:00:00 2001 From: cherednik Date: Thu, 9 Jan 2025 18:42:58 +0400 Subject: [PATCH 05/20] =?UTF-8?q?DD-3602:=20[BACK].=20[=D0=94=D0=BE=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=BD=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20=D0=B2?= =?UTF-8?q?=D0=BE=D0=B4=D0=B8=D1=82=D0=B5=D0=BB=D1=8E=20=D1=81=20=D0=9A?= =?UTF-8?q?=D0=AD=D0=9F]=20-=20[=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D1=82=D1=8C=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BA=D1=83=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=B0=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20=D0=90=D0=9F=D0=98=20?= =?UTF-8?q?=D0=94=D0=B8=D0=B0=D0=B4=D0=BE=D0=BA]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/SignDocument/Services/DigitalSignatureService.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/SignDocument/Services/DigitalSignatureService.php b/backend/src/SignDocument/Services/DigitalSignatureService.php index 2a46955..6c9468b 100644 --- a/backend/src/SignDocument/Services/DigitalSignatureService.php +++ b/backend/src/SignDocument/Services/DigitalSignatureService.php @@ -33,7 +33,7 @@ class DigitalSignatureService exec(sprintf('cp %s %s.pdf', $document->tempFileName, $document->tempFileName)); exec(sprintf('cryptcp -sign -detached -der %s', $document->tempFileName . '.pdf')); - $response = base64_encode(file_get_contents($document->tempFileName . '.sgn')); + $response = base64_encode(file_get_contents($document->tempFileName . '.pdf.sgn')); $this->removeExistingDocumentService->removeExistingDocument($document); From 011503b6a0425cc6c07249c11f99e65c8a19fdc6 Mon Sep 17 00:00:00 2001 From: cherednik Date: Thu, 9 Jan 2025 19:08:14 +0400 Subject: [PATCH 06/20] =?UTF-8?q?DD-3602:=20[BACK].=20[=D0=94=D0=BE=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=BD=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20=D0=B2?= =?UTF-8?q?=D0=BE=D0=B4=D0=B8=D1=82=D0=B5=D0=BB=D1=8E=20=D1=81=20=D0=9A?= =?UTF-8?q?=D0=AD=D0=9F]=20-=20[=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D1=82=D1=8C=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BA=D1=83=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=B0=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20=D0=90=D0=9F=D0=98=20?= =?UTF-8?q?=D0=94=D0=B8=D0=B0=D0=B4=D0=BE=D0=BA]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/composer.json | 2 +- backend/composer.lock | 583 ++++++++++++++++++++++++------------------ 2 files changed, 337 insertions(+), 248 deletions(-) diff --git a/backend/composer.json b/backend/composer.json index b04d8e4..9f42747 100755 --- a/backend/composer.json +++ b/backend/composer.json @@ -2,7 +2,7 @@ "type": "project", "license": "proprietary", "require": { - "php": "^8.3", + "php": "^8.2", "ext-ctype": "*", "ext-iconv": "*", "composer/package-versions-deprecated": "1.11.99.5", diff --git a/backend/composer.lock b/backend/composer.lock index 83bd001..932ce1e 100644 --- a/backend/composer.lock +++ b/backend/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "0d9c45fd694083582028c80344c66518", + "content-hash": "17dddd8d6c53c64e6691a6210038b632", "packages": [ { "name": "composer/package-versions-deprecated", @@ -81,16 +81,16 @@ }, { "name": "doctrine/annotations", - "version": "2.0.1", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f" + "reference": "901c2ee5d26eb64ff43c47976e114bf00843acf7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", - "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/901c2ee5d26eb64ff43c47976e114bf00843acf7", + "reference": "901c2ee5d26eb64ff43c47976e114bf00843acf7", "shasum": "" }, "require": { @@ -102,10 +102,10 @@ "require-dev": { "doctrine/cache": "^2.0", "doctrine/coding-standard": "^10", - "phpstan/phpstan": "^1.8.0", + "phpstan/phpstan": "^1.10.28", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "symfony/cache": "^5.4 || ^6", - "vimeo/psalm": "^4.10" + "symfony/cache": "^5.4 || ^6.4 || ^7", + "vimeo/psalm": "^4.30 || ^5.14" }, "suggest": { "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" @@ -151,9 +151,9 @@ ], "support": { "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/2.0.1" + "source": "https://github.com/doctrine/annotations/tree/2.0.2" }, - "time": "2023-02-02T22:02:53+00:00" + "time": "2024-09-05T10:17:24+00:00" }, { "name": "doctrine/cache", @@ -336,20 +336,20 @@ }, { "name": "doctrine/common", - "version": "3.4.4", + "version": "3.5.0", "source": { "type": "git", "url": "https://github.com/doctrine/common.git", - "reference": "0aad4b7ab7ce8c6602dfbb1e1a24581275fb9d1a" + "reference": "d9ea4a54ca2586db781f0265d36bea731ac66ec5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/common/zipball/0aad4b7ab7ce8c6602dfbb1e1a24581275fb9d1a", - "reference": "0aad4b7ab7ce8c6602dfbb1e1a24581275fb9d1a", + "url": "https://api.github.com/repos/doctrine/common/zipball/d9ea4a54ca2586db781f0265d36bea731ac66ec5", + "reference": "d9ea4a54ca2586db781f0265d36bea731ac66ec5", "shasum": "" }, "require": { - "doctrine/persistence": "^2.0 || ^3.0", + "doctrine/persistence": "^2.0 || ^3.0 || ^4.0", "php": "^7.1 || ^8.0" }, "require-dev": { @@ -407,7 +407,7 @@ ], "support": { "issues": "https://github.com/doctrine/common/issues", - "source": "https://github.com/doctrine/common/tree/3.4.4" + "source": "https://github.com/doctrine/common/tree/3.5.0" }, "funding": [ { @@ -423,20 +423,20 @@ "type": "tidelift" } ], - "time": "2024-04-16T13:35:33+00:00" + "time": "2025-01-01T22:12:03+00:00" }, { "name": "doctrine/dbal", - "version": "3.9.0", + "version": "3.9.3", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "d8f68ea6cc00912e5313237130b8c8decf4d28c6" + "reference": "61446f07fcb522414d6cfd8b1c3e5f9e18c579ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/d8f68ea6cc00912e5313237130b8c8decf4d28c6", - "reference": "d8f68ea6cc00912e5313237130b8c8decf4d28c6", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/61446f07fcb522414d6cfd8b1c3e5f9e18c579ba", + "reference": "61446f07fcb522414d6cfd8b1c3e5f9e18c579ba", "shasum": "" }, "require": { @@ -452,7 +452,7 @@ "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.11.7", + "phpstan/phpstan": "1.12.6", "phpstan/phpstan-strict-rules": "^1.6", "phpunit/phpunit": "9.6.20", "psalm/plugin-phpunit": "0.18.4", @@ -520,7 +520,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.9.0" + "source": "https://github.com/doctrine/dbal/tree/3.9.3" }, "funding": [ { @@ -536,33 +536,31 @@ "type": "tidelift" } ], - "time": "2024-08-15T07:34:42+00:00" + "time": "2024-10-10T17:56:43+00:00" }, { "name": "doctrine/deprecations", - "version": "1.1.3", + "version": "1.1.4", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" + "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", - "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/31610dbb31faa98e6b5447b62340826f54fbc4e9", + "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9", - "phpstan/phpstan": "1.4.10 || 1.10.15", - "phpstan/phpstan-phpunit": "^1.0", + "doctrine/coding-standard": "^9 || ^12", + "phpstan/phpstan": "1.4.10 || 2.0.3", + "phpstan/phpstan-phpunit": "^1.0 || ^2", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psalm/plugin-phpunit": "0.18.4", - "psr/log": "^1 || ^2 || ^3", - "vimeo/psalm": "4.30.0 || 5.12.0" + "psr/log": "^1 || ^2 || ^3" }, "suggest": { "psr/log": "Allows logging deprecations via PSR-3 logger implementation" @@ -570,7 +568,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + "Doctrine\\Deprecations\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -581,22 +579,22 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.3" + "source": "https://github.com/doctrine/deprecations/tree/1.1.4" }, - "time": "2024-01-30T19:34:25+00:00" + "time": "2024-12-07T21:18:45+00:00" }, { "name": "doctrine/doctrine-bundle", - "version": "2.12.0", + "version": "2.13.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "5418e811a14724068e95e0ba43353b903ada530f" + "reference": "ca59d84b8e63143ce1aed90cdb333ba329d71563" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/5418e811a14724068e95e0ba43353b903ada530f", - "reference": "5418e811a14724068e95e0ba43353b903ada530f", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/ca59d84b8e63143ce1aed90cdb333ba329d71563", + "reference": "ca59d84b8e63143ce1aed90cdb333ba329d71563", "shasum": "" }, "require": { @@ -687,7 +685,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.12.0" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.13.0" }, "funding": [ { @@ -703,7 +701,7 @@ "type": "tidelift" } ], - "time": "2024-03-19T07:20:37+00:00" + "time": "2024-09-01T09:46:40+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", @@ -1128,16 +1126,16 @@ }, { "name": "doctrine/migrations", - "version": "3.8.0", + "version": "3.8.2", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "535a70dcbd88b8c6ba945be050977457f4f4c06c" + "reference": "5007eb1168691225ac305fe16856755c20860842" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/535a70dcbd88b8c6ba945be050977457f4f4c06c", - "reference": "535a70dcbd88b8c6ba945be050977457f4f4c06c", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/5007eb1168691225ac305fe16856755c20860842", + "reference": "5007eb1168691225ac305fe16856755c20860842", "shasum": "" }, "require": { @@ -1160,6 +1158,7 @@ "doctrine/persistence": "^2 || ^3", "doctrine/sql-formatter": "^1.0", "ext-pdo_sqlite": "*", + "fig/log-test": "^1", "phpstan/phpstan": "^1.10", "phpstan/phpstan-deprecation-rules": "^1.1", "phpstan/phpstan-phpunit": "^1.3", @@ -1210,7 +1209,7 @@ ], "support": { "issues": "https://github.com/doctrine/migrations/issues", - "source": "https://github.com/doctrine/migrations/tree/3.8.0" + "source": "https://github.com/doctrine/migrations/tree/3.8.2" }, "funding": [ { @@ -1226,20 +1225,20 @@ "type": "tidelift" } ], - "time": "2024-06-26T14:12:46+00:00" + "time": "2024-10-10T21:35:27+00:00" }, { "name": "doctrine/orm", - "version": "2.19.7", + "version": "2.20.1", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "168ac31084226f94d42e7461a40ff5607a56bd35" + "reference": "e3cabade99ebccc6ba078884c1c5f250866a494e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/168ac31084226f94d42e7461a40ff5607a56bd35", - "reference": "168ac31084226f94d42e7461a40ff5607a56bd35", + "url": "https://api.github.com/repos/doctrine/orm/zipball/e3cabade99ebccc6ba078884c1c5f250866a494e", + "reference": "e3cabade99ebccc6ba078884c1c5f250866a494e", "shasum": "" }, "require": { @@ -1268,14 +1267,15 @@ "doctrine/annotations": "^1.13 || ^2", "doctrine/coding-standard": "^9.0.2 || ^12.0", "phpbench/phpbench": "^0.16.10 || ^1.0", - "phpstan/phpstan": "~1.4.10 || 1.11.1", + "phpstan/extension-installer": "~1.1.0 || ^1.4", + "phpstan/phpstan": "~1.4.10 || 2.0.3", + "phpstan/phpstan-deprecation-rules": "^1 || ^2", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", "psr/log": "^1 || ^2 || ^3", "squizlabs/php_codesniffer": "3.7.2", "symfony/cache": "^4.4 || ^5.4 || ^6.4 || ^7.0", "symfony/var-exporter": "^4.4 || ^5.4 || ^6.2 || ^7.0", - "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0", - "vimeo/psalm": "4.30.0 || 5.24.0" + "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0" }, "suggest": { "ext-dom": "Provides support for XSD validation for XML mapping files", @@ -1325,22 +1325,22 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.19.7" + "source": "https://github.com/doctrine/orm/tree/2.20.1" }, - "time": "2024-08-23T06:54:57+00:00" + "time": "2024-12-19T06:48:36+00:00" }, { "name": "doctrine/persistence", - "version": "3.3.3", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "b337726451f5d530df338fc7f68dee8781b49779" + "reference": "0ea965320cec355dba75031c1b23d4c78362e3ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/b337726451f5d530df338fc7f68dee8781b49779", - "reference": "b337726451f5d530df338fc7f68dee8781b49779", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/0ea965320cec355dba75031c1b23d4c78362e3ff", + "reference": "0ea965320cec355dba75031c1b23d4c78362e3ff", "shasum": "" }, "require": { @@ -1354,12 +1354,11 @@ "require-dev": { "doctrine/coding-standard": "^12", "doctrine/common": "^3.0", - "phpstan/phpstan": "1.11.1", + "phpstan/phpstan": "1.12.7", "phpstan/phpstan-phpunit": "^1", "phpstan/phpstan-strict-rules": "^1.1", - "phpunit/phpunit": "^8.5 || ^9.5", - "symfony/cache": "^4.4 || ^5.4 || ^6.0", - "vimeo/psalm": "4.30.0 || 5.24.0" + "phpunit/phpunit": "^8.5.38 || ^9.5", + "symfony/cache": "^4.4 || ^5.4 || ^6.0 || ^7.0" }, "type": "library", "autoload": { @@ -1408,7 +1407,7 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/3.3.3" + "source": "https://github.com/doctrine/persistence/tree/3.4.0" }, "funding": [ { @@ -1424,20 +1423,20 @@ "type": "tidelift" } ], - "time": "2024-06-20T10:14:30+00:00" + "time": "2024-10-30T19:48:12+00:00" }, { "name": "doctrine/sql-formatter", - "version": "1.4.1", + "version": "1.5.1", "source": { "type": "git", "url": "https://github.com/doctrine/sql-formatter.git", - "reference": "7f83911cc5eba870de7ebb11283972483f7e2891" + "reference": "b784cbde727cf806721451dde40eff4fec3bbe86" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/7f83911cc5eba870de7ebb11283972483f7e2891", - "reference": "7f83911cc5eba870de7ebb11283972483f7e2891", + "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/b784cbde727cf806721451dde40eff4fec3bbe86", + "reference": "b784cbde727cf806721451dde40eff4fec3bbe86", "shasum": "" }, "require": { @@ -1445,6 +1444,7 @@ }, "require-dev": { "doctrine/coding-standard": "^12", + "ergebnis/phpunit-slow-test-detector": "^2.14", "phpstan/phpstan": "^1.10", "phpunit/phpunit": "^10.5", "vimeo/psalm": "^5.24" @@ -1477,29 +1477,29 @@ ], "support": { "issues": "https://github.com/doctrine/sql-formatter/issues", - "source": "https://github.com/doctrine/sql-formatter/tree/1.4.1" + "source": "https://github.com/doctrine/sql-formatter/tree/1.5.1" }, - "time": "2024-08-05T20:32:22+00:00" + "time": "2024-10-21T18:21:57+00:00" }, { "name": "easycorp/easyadmin-bundle", - "version": "v4.11.1", + "version": "v4.20.5", "source": { "type": "git", "url": "https://github.com/EasyCorp/EasyAdminBundle.git", - "reference": "d0945053e9dbf81d0c10f8cacec25c8ec5e87053" + "reference": "4903938a90d08afb481d7f185f2e2666d6767ca5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/EasyCorp/EasyAdminBundle/zipball/d0945053e9dbf81d0c10f8cacec25c8ec5e87053", - "reference": "d0945053e9dbf81d0c10f8cacec25c8ec5e87053", + "url": "https://api.github.com/repos/EasyCorp/EasyAdminBundle/zipball/4903938a90d08afb481d7f185f2e2666d6767ca5", + "reference": "4903938a90d08afb481d7f185f2e2666d6767ca5", "shasum": "" }, "require": { "doctrine/doctrine-bundle": "^2.5", - "doctrine/orm": "^2.10|^3.0", + "doctrine/orm": "^2.12|^3.0", "ext-json": "*", - "php": ">=8.0.2", + "php": ">=8.1", "symfony/asset": "^5.4|^6.0|^7.0", "symfony/cache": "^5.4|^6.0|^7.0", "symfony/config": "^5.4|^6.0|^7.0", @@ -1519,7 +1519,9 @@ "symfony/translation": "^5.4|^6.0|^7.0", "symfony/twig-bundle": "^5.4|^6.0|^7.0", "symfony/uid": "^5.4|^6.0|^7.0", - "symfony/validator": "^5.4|^6.0|^7.0" + "symfony/ux-twig-component": "^2.21", + "symfony/validator": "^5.4|^6.0|^7.0", + "twig/twig": "^3.15" }, "require-dev": { "doctrine/doctrine-fixtures-bundle": "^3.4|3.5.x-dev", @@ -1534,7 +1536,8 @@ "symfony/debug-bundle": "^5.4|^6.0|^7.0", "symfony/dom-crawler": "^5.4|^6.0|^7.0", "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/phpunit-bridge": "^5.4|^6.0|^7.0" + "symfony/phpunit-bridge": "^6.1|^7.0", + "symfony/process": "^5.4|^6.0|^7.0" }, "type": "symfony-bundle", "extra": { @@ -1566,7 +1569,7 @@ ], "support": { "issues": "https://github.com/EasyCorp/EasyAdminBundle/issues", - "source": "https://github.com/EasyCorp/EasyAdminBundle/tree/v4.11.1" + "source": "https://github.com/EasyCorp/EasyAdminBundle/tree/v4.20.5" }, "funding": [ { @@ -1574,7 +1577,7 @@ "type": "github" } ], - "time": "2024-08-06T18:21:54+00:00" + "time": "2025-01-03T19:17:42+00:00" }, { "name": "guzzlehttp/guzzle", @@ -1704,16 +1707,16 @@ }, { "name": "guzzlehttp/promises", - "version": "2.0.3", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8" + "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8", - "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8", + "url": "https://api.github.com/repos/guzzle/promises/zipball/f9c436286ab2892c7db7be8c8da4ef61ccf7b455", + "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455", "shasum": "" }, "require": { @@ -1767,7 +1770,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.3" + "source": "https://github.com/guzzle/promises/tree/2.0.4" }, "funding": [ { @@ -1783,7 +1786,7 @@ "type": "tidelift" } ], - "time": "2024-07-18T10:29:17+00:00" + "time": "2024-10-17T10:06:22+00:00" }, { "name": "guzzlehttp/psr7", @@ -2215,16 +2218,16 @@ }, { "name": "psr/log", - "version": "3.0.1", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "79dff0b268932c640297f5208d6298f71855c03e" + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/79dff0b268932c640297f5208d6298f71855c03e", - "reference": "79dff0b268932c640297f5208d6298f71855c03e", + "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", "shasum": "" }, "require": { @@ -2259,9 +2262,9 @@ "psr-3" ], "support": { - "source": "https://github.com/php-fig/log/tree/3.0.1" + "source": "https://github.com/php-fig/log/tree/3.0.2" }, - "time": "2024-08-21T13:31:24+00:00" + "time": "2024-09-11T13:17:53+00:00" }, { "name": "ralouphie/getallheaders", @@ -2477,16 +2480,16 @@ }, { "name": "symfony/cache-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197" + "reference": "15a4f8e5cd3bce9aeafc882b1acab39ec8de2c1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/df6a1a44c890faded49a5fca33c2d5c5fd3c2197", - "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/15a4f8e5cd3bce9aeafc882b1acab39ec8de2c1b", + "reference": "15a4f8e5cd3bce9aeafc882b1acab39ec8de2c1b", "shasum": "" }, "require": { @@ -2495,12 +2498,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -2533,7 +2536,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/cache-contracts/tree/v3.5.1" }, "funding": [ { @@ -2549,7 +2552,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/config", @@ -2813,16 +2816,16 @@ }, { "name": "symfony/deprecation-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", "shasum": "" }, "require": { @@ -2830,12 +2833,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -2860,7 +2863,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" }, "funding": [ { @@ -2876,7 +2879,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/doctrine-bridge", @@ -3222,16 +3225,16 @@ }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50" + "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50", - "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7642f5e970b672283b7823222ae8ef8bbc160b9f", + "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f", "shasum": "" }, "require": { @@ -3240,12 +3243,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -3278,7 +3281,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.1" }, "funding": [ { @@ -3294,7 +3297,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/filesystem", @@ -3425,22 +3428,25 @@ }, { "name": "symfony/flex", - "version": "v2.4.6", + "version": "v2.4.7", "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "4dc11919791f81d087a12db2ab4c7e044431ef6b" + "reference": "92f4fba342161ff36072bd3b8e0b3c6c23160402" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/4dc11919791f81d087a12db2ab4c7e044431ef6b", - "reference": "4dc11919791f81d087a12db2ab4c7e044431ef6b", + "url": "https://api.github.com/repos/symfony/flex/zipball/92f4fba342161ff36072bd3b8e0b3c6c23160402", + "reference": "92f4fba342161ff36072bd3b8e0b3c6c23160402", "shasum": "" }, "require": { "composer-plugin-api": "^2.1", "php": ">=8.0" }, + "conflict": { + "composer/semver": "<1.7.2" + }, "require-dev": { "composer/composer": "^2.1", "symfony/dotenv": "^5.4|^6.0", @@ -3470,7 +3476,7 @@ "description": "Composer plugin for Symfony", "support": { "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v2.4.6" + "source": "https://github.com/symfony/flex/tree/v2.4.7" }, "funding": [ { @@ -3486,7 +3492,7 @@ "type": "tidelift" } ], - "time": "2024-04-27T10:22:22+00:00" + "time": "2024-10-07T08:51:54+00:00" }, { "name": "symfony/form", @@ -4154,20 +4160,20 @@ }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.30.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a" + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/64647a7c30b2283f5d49b874d84a18fc22054b7a", - "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" @@ -4175,8 +4181,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4212,7 +4218,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" }, "funding": [ { @@ -4228,24 +4234,24 @@ "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-icu", - "version": "v1.30.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "e76343c631b453088e2260ac41dfebe21954de81" + "reference": "d80a05e9904d2c2b9b95929f3e4b5d3a8f418d78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/e76343c631b453088e2260ac41dfebe21954de81", - "reference": "e76343c631b453088e2260ac41dfebe21954de81", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/d80a05e9904d2c2b9b95929f3e4b5d3a8f418d78", + "reference": "d80a05e9904d2c2b9b95929f3e4b5d3a8f418d78", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance and support of other locales than \"en\"" @@ -4253,8 +4259,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4296,7 +4302,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.31.0" }, "funding": [ { @@ -4312,24 +4318,24 @@ "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.30.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb" + "reference": "3833d7255cc303546435cb650316bff708a1c75c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/a95281b0be0d9ab48050ebd988b967875cdb9fdb", - "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" @@ -4337,8 +4343,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4377,7 +4383,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" }, "funding": [ { @@ -4393,24 +4399,24 @@ "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.30.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c" + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fd22ab50000ef01661e2a31d850ebaa297f8e03c", - "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-mbstring": "*" @@ -4421,8 +4427,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4457,7 +4463,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" }, "funding": [ { @@ -4473,30 +4479,30 @@ "type": "tidelift" } ], - "time": "2024-06-19T12:30:46+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.30.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "77fa7995ac1b21ab60769b7323d600a991a90433" + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/77fa7995ac1b21ab60769b7323d600a991a90433", - "reference": "77fa7995ac1b21ab60769b7323d600a991a90433", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4537,7 +4543,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" }, "funding": [ { @@ -4553,30 +4559,30 @@ "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.30.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "3fb075789fb91f9ad9af537c4012d523085bd5af" + "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/3fb075789fb91f9ad9af537c4012d523085bd5af", - "reference": "3fb075789fb91f9ad9af537c4012d523085bd5af", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", + "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4613,7 +4619,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.31.0" }, "funding": [ { @@ -4629,24 +4635,24 @@ "type": "tidelift" } ], - "time": "2024-06-19T12:30:46+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-uuid", - "version": "v1.30.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "2ba1f33797470debcda07fe9dce20a0003df18e9" + "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/2ba1f33797470debcda07fe9dce20a0003df18e9", - "reference": "2ba1f33797470debcda07fe9dce20a0003df18e9", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/21533be36c24be3f4b1669c4725c7d1d2bab4ae2", + "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-uuid": "*" @@ -4657,8 +4663,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4692,7 +4698,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.31.0" }, "funding": [ { @@ -4708,7 +4714,7 @@ "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/property-access", @@ -5496,16 +5502,16 @@ }, { "name": "symfony/service-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", "shasum": "" }, "require": { @@ -5518,12 +5524,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -5559,7 +5565,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" }, "funding": [ { @@ -5575,20 +5581,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/stimulus-bundle", - "version": "v2.19.0", + "version": "v2.22.1", "source": { "type": "git", "url": "https://github.com/symfony/stimulus-bundle.git", - "reference": "5e2e1aff3e7cff2875e2f901437543fda9ca9910" + "reference": "e13034d428354023c82a1db108d40fdf6cec2d36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/5e2e1aff3e7cff2875e2f901437543fda9ca9910", - "reference": "5e2e1aff3e7cff2875e2f901437543fda9ca9910", + "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/e13034d428354023c82a1db108d40fdf6cec2d36", + "reference": "e13034d428354023c82a1db108d40fdf6cec2d36", "shasum": "" }, "require": { @@ -5628,7 +5634,7 @@ "symfony-ux" ], "support": { - "source": "https://github.com/symfony/stimulus-bundle/tree/v2.19.0" + "source": "https://github.com/symfony/stimulus-bundle/tree/v2.22.1" }, "funding": [ { @@ -5644,7 +5650,7 @@ "type": "tidelift" } ], - "time": "2024-07-30T19:26:23+00:00" + "time": "2024-12-06T14:30:33+00:00" }, { "name": "symfony/stopwatch", @@ -5894,16 +5900,16 @@ }, { "name": "symfony/translation-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a" + "reference": "4667ff3bd513750603a09c8dedbea942487fb07c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", - "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/4667ff3bd513750603a09c8dedbea942487fb07c", + "reference": "4667ff3bd513750603a09c8dedbea942487fb07c", "shasum": "" }, "require": { @@ -5911,12 +5917,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -5952,7 +5958,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.5.1" }, "funding": [ { @@ -5968,7 +5974,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/twig-bridge", @@ -6255,16 +6261,16 @@ }, { "name": "symfony/ux-chartjs", - "version": "v2.19.3", + "version": "v2.22.1", "source": { "type": "git", "url": "https://github.com/symfony/ux-chartjs.git", - "reference": "a16c8272e8e9d362c0f3b4d70742747e26d66147" + "reference": "6e7de01ea469840da2b7458b660b52e846e279e1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/ux-chartjs/zipball/a16c8272e8e9d362c0f3b4d70742747e26d66147", - "reference": "a16c8272e8e9d362c0f3b4d70742747e26d66147", + "url": "https://api.github.com/repos/symfony/ux-chartjs/zipball/6e7de01ea469840da2b7458b660b52e846e279e1", + "reference": "6e7de01ea469840da2b7458b660b52e846e279e1", "shasum": "" }, "require": { @@ -6286,8 +6292,8 @@ "type": "symfony-bundle", "extra": { "thanks": { - "name": "symfony/ux", - "url": "https://github.com/symfony/ux" + "url": "https://github.com/symfony/ux", + "name": "symfony/ux" } }, "autoload": { @@ -6315,7 +6321,7 @@ "symfony-ux" ], "support": { - "source": "https://github.com/symfony/ux-chartjs/tree/v2.19.3" + "source": "https://github.com/symfony/ux-chartjs/tree/v2.22.1" }, "funding": [ { @@ -6331,7 +6337,90 @@ "type": "tidelift" } ], - "time": "2024-08-14T04:55:38+00:00" + "time": "2024-12-05T14:25:02+00:00" + }, + { + "name": "symfony/ux-twig-component", + "version": "v2.22.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/ux-twig-component.git", + "reference": "9b347f6ca2d9e18cee630787f0a6aa453982bf18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/ux-twig-component/zipball/9b347f6ca2d9e18cee630787f0a6aa453982bf18", + "reference": "9b347f6ca2d9e18cee630787f0a6aa453982bf18", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/deprecation-contracts": "^2.2|^3.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "twig/twig": "^3.8" + }, + "conflict": { + "symfony/config": "<5.4.0" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/dom-crawler": "^5.4|^6.0|^7.0", + "symfony/framework-bundle": "^5.4|^6.0|^7.0", + "symfony/phpunit-bridge": "^6.0|^7.0", + "symfony/stimulus-bundle": "^2.9.1", + "symfony/twig-bundle": "^5.4|^6.0|^7.0", + "symfony/webpack-encore-bundle": "^1.15" + }, + "type": "symfony-bundle", + "extra": { + "thanks": { + "url": "https://github.com/symfony/ux", + "name": "symfony/ux" + } + }, + "autoload": { + "psr-4": { + "Symfony\\UX\\TwigComponent\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Twig components for Symfony", + "homepage": "https://symfony.com", + "keywords": [ + "components", + "symfony-ux", + "twig" + ], + "support": { + "source": "https://github.com/symfony/ux-twig-component/tree/v2.22.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-12-07T18:05:50+00:00" }, { "name": "symfony/validator", @@ -6678,27 +6767,27 @@ }, { "name": "twig/twig", - "version": "v3.11.0", + "version": "v3.18.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "e80fb8ebba85c7341a97a9ebf825d7fd4b77708d" + "reference": "acffa88cc2b40dbe42eaf3a5025d6c0d4600cc50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/e80fb8ebba85c7341a97a9ebf825d7fd4b77708d", - "reference": "e80fb8ebba85c7341a97a9ebf825d7fd4b77708d", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/acffa88cc2b40dbe42eaf3a5025d6c0d4600cc50", + "reference": "acffa88cc2b40dbe42eaf3a5025d6c0d4600cc50", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.0.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "^1.8", "symfony/polyfill-mbstring": "^1.3", - "symfony/polyfill-php80": "^1.22", "symfony/polyfill-php81": "^1.29" }, "require-dev": { + "phpstan/phpstan": "^2.0", "psr/container": "^1.0|^2.0", "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0" }, @@ -6742,7 +6831,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.11.0" + "source": "https://github.com/twigphp/Twig/tree/v3.18.0" }, "funding": [ { @@ -6754,22 +6843,22 @@ "type": "tidelift" } ], - "time": "2024-08-08T16:15:16+00:00" + "time": "2024-12-29T10:51:50+00:00" } ], "packages-dev": [ { "name": "nikic/php-parser", - "version": "v4.19.1", + "version": "v4.19.4", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b" + "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4e1b88d21c69391150ace211e9eaf05810858d0b", - "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/715f4d25e225bc47b293a8b997fe6ce99bf987d2", + "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2", "shasum": "" }, "require": { @@ -6778,7 +6867,7 @@ }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "bin": [ "bin/php-parse" @@ -6810,9 +6899,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.4" }, - "time": "2024-03-17T08:10:35+00:00" + "time": "2024-09-29T15:01:53+00:00" }, { "name": "symfony/maker-bundle", @@ -6972,14 +7061,14 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": {}, "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "^8.3", + "php": "^8.2", "ext-ctype": "*", "ext-iconv": "*" }, - "platform-dev": [], + "platform-dev": {}, "plugin-api-version": "2.6.0" } From 2c29f7210b9c2bbdfbca014ac8e92f2f95b9e257 Mon Sep 17 00:00:00 2001 From: cherednik Date: Thu, 9 Jan 2025 19:15:27 +0400 Subject: [PATCH 07/20] =?UTF-8?q?DD-3602:=20[BACK].=20[=D0=94=D0=BE=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=BD=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20=D0=B2?= =?UTF-8?q?=D0=BE=D0=B4=D0=B8=D1=82=D0=B5=D0=BB=D1=8E=20=D1=81=20=D0=9A?= =?UTF-8?q?=D0=AD=D0=9F]=20-=20[=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D1=82=D1=8C=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BA=D1=83=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=B0=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20=D0=90=D0=9F=D0=98=20?= =?UTF-8?q?=D0=94=D0=B8=D0=B0=D0=B4=D0=BE=D0=BA]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/composer.json | 2 +- backend/composer.lock | 4 ++-- backend/config/bundles.php | 1 + backend/config/packages/twig_component.yaml | 5 +++++ backend/symfony.lock | 12 ++++++++++++ 5 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 backend/config/packages/twig_component.yaml diff --git a/backend/composer.json b/backend/composer.json index 9f42747..b04d8e4 100755 --- a/backend/composer.json +++ b/backend/composer.json @@ -2,7 +2,7 @@ "type": "project", "license": "proprietary", "require": { - "php": "^8.2", + "php": "^8.3", "ext-ctype": "*", "ext-iconv": "*", "composer/package-versions-deprecated": "1.11.99.5", diff --git a/backend/composer.lock b/backend/composer.lock index 932ce1e..f193701 100644 --- a/backend/composer.lock +++ b/backend/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "17dddd8d6c53c64e6691a6210038b632", + "content-hash": "0d9c45fd694083582028c80344c66518", "packages": [ { "name": "composer/package-versions-deprecated", @@ -7065,7 +7065,7 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "^8.2", + "php": "^8.3", "ext-ctype": "*", "ext-iconv": "*" }, diff --git a/backend/config/bundles.php b/backend/config/bundles.php index 9d71b39..e7f2fda 100644 --- a/backend/config/bundles.php +++ b/backend/config/bundles.php @@ -10,4 +10,5 @@ return [ Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true], Symfony\UX\StimulusBundle\StimulusBundle::class => ['all' => true], Symfony\UX\Chartjs\ChartjsBundle::class => ['all' => true], + Symfony\UX\TwigComponent\TwigComponentBundle::class => ['all' => true], ]; diff --git a/backend/config/packages/twig_component.yaml b/backend/config/packages/twig_component.yaml new file mode 100644 index 0000000..fd17ac6 --- /dev/null +++ b/backend/config/packages/twig_component.yaml @@ -0,0 +1,5 @@ +twig_component: + anonymous_template_directory: 'components/' + defaults: + # Namespace & directory for components + App\Twig\Components\: 'components/' diff --git a/backend/symfony.lock b/backend/symfony.lock index 6eb1840..19b6c1e 100644 --- a/backend/symfony.lock +++ b/backend/symfony.lock @@ -176,6 +176,18 @@ "symfony/ux-chartjs": { "version": "v2.19.3" }, + "symfony/ux-twig-component": { + "version": "2.22", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "2.13", + "ref": "67814b5f9794798b885cec9d3f48631424449a01" + }, + "files": [ + "config/packages/twig_component.yaml" + ] + }, "symfony/validator": { "version": "6.2", "recipe": { From eda759e7aa0ecef2b044d4fc14cae642eec54660 Mon Sep 17 00:00:00 2001 From: cherednik Date: Thu, 9 Jan 2025 19:19:13 +0400 Subject: [PATCH 08/20] =?UTF-8?q?DD-3602:=20[BACK].=20[=D0=94=D0=BE=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=BD=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20=D0=B2?= =?UTF-8?q?=D0=BE=D0=B4=D0=B8=D1=82=D0=B5=D0=BB=D1=8E=20=D1=81=20=D0=9A?= =?UTF-8?q?=D0=AD=D0=9F]=20-=20[=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D1=82=D1=8C=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BA=D1=83=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=B0=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20=D0=90=D0=9F=D0=98=20?= =?UTF-8?q?=D0=94=D0=B8=D0=B0=D0=B4=D0=BE=D0=BA]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/public/index.php | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/public/index.php b/backend/public/index.php index 9982c21..db42f9e 100755 --- a/backend/public/index.php +++ b/backend/public/index.php @@ -1,4 +1,5 @@ Date: Thu, 9 Jan 2025 19:29:31 +0400 Subject: [PATCH 09/20] =?UTF-8?q?DD-3602:=20[BACK].=20[=D0=94=D0=BE=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=BD=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20=D0=B2?= =?UTF-8?q?=D0=BE=D0=B4=D0=B8=D1=82=D0=B5=D0=BB=D1=8E=20=D1=81=20=D0=9A?= =?UTF-8?q?=D0=AD=D0=9F]=20-=20[=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D1=82=D1=8C=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BA=D1=83=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=B0=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20=D0=90=D0=9F=D0=98=20?= =?UTF-8?q?=D0=94=D0=B8=D0=B0=D0=B4=D0=BE=D0=BA]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/public/index.php | 1 - .../Infrastructure/Traits/ApiHelperTrait.php | 51 +++++++++++++++++++ .../Controller/DigitalSignatureController.php | 14 +++-- 3 files changed, 61 insertions(+), 5 deletions(-) create mode 100644 backend/src/Infrastructure/Traits/ApiHelperTrait.php diff --git a/backend/public/index.php b/backend/public/index.php index db42f9e..9982c21 100755 --- a/backend/public/index.php +++ b/backend/public/index.php @@ -1,5 +1,4 @@ $message, + 'body' => $body, + ], $code); + } + + public function createPaginateJsonResponse(array $items, int $limit, int $totalCount): JsonResponse + { + return $this->createJsonResponse( + [ + 'items' => $items, + 'pages' => ceil($totalCount / $limit), + 'totalCount' => $totalCount, + ] + ); + } + + public function createJsonResponseFromObject(AbstractResponse $body, string $message = 'OK', int $code = 200): JsonResponse + { + return new JsonResponse([ + 'message' => $message, + 'body' => $this->toArray($body), + ], $code); + } + + private function toArray(AbstractResponse $body): array + { + $reflect = new ReflectionClass($body); + $props = $reflect->getProperties(); + $array = []; + foreach ($props as $prop) { + $prop->setAccessible(true); + $array[$prop->getName()] = $prop->getValue($body); + $prop->setAccessible(false); + } + + return $array; + } +} diff --git a/backend/src/SignDocument/Controller/DigitalSignatureController.php b/backend/src/SignDocument/Controller/DigitalSignatureController.php index c3bc6c0..419514f 100644 --- a/backend/src/SignDocument/Controller/DigitalSignatureController.php +++ b/backend/src/SignDocument/Controller/DigitalSignatureController.php @@ -5,17 +5,18 @@ declare(strict_types=1); namespace App\SignDocument\Controller; use App\DigitalSignature\Controller\SignService; +use App\Infrastructure\Traits\ApiHelperTrait; use App\SignDocument\Api\Request\DigitalSignatureRequest; -use App\SignDocument\Api\Request\SignRequest; use App\SignDocument\Services\DigitalSignatureService; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; -use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; +use Exception; class DigitalSignatureController extends AbstractController { + use ApiHelperTrait; public function __construct( private readonly DigitalSignatureService $digitalSignatureService ){ @@ -26,7 +27,12 @@ class DigitalSignatureController extends AbstractController { $token = $request->server->get('HTTP_AUTHORIZATION'); - return new JsonResponse($this->digitalSignatureService->getSignature($digitalSignatureRequest, $token)); + try { + return $this->createJsonResponse([ + 'base64' => $this->digitalSignatureService->getSignature($digitalSignatureRequest, $token), + ]); + } catch (Exception $exception) { + return $this->createJsonResponse([], $exception->getMessage(), 400); + } } - } \ No newline at end of file From c4c29fa2a76ca887b601b640aec61e88d34a4f47 Mon Sep 17 00:00:00 2001 From: cherednik Date: Thu, 9 Jan 2025 19:56:50 +0400 Subject: [PATCH 10/20] =?UTF-8?q?DD-3602:=20[BACK].=20[=D0=94=D0=BE=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=BD=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20=D0=B2?= =?UTF-8?q?=D0=BE=D0=B4=D0=B8=D1=82=D0=B5=D0=BB=D1=8E=20=D1=81=20=D0=9A?= =?UTF-8?q?=D0=AD=D0=9F]=20-=20[=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D1=82=D1=8C=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BA=D1=83=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=B0=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20=D0=90=D0=9F=D0=98=20?= =?UTF-8?q?=D0=94=D0=B8=D0=B0=D0=B4=D0=BE=D0=BA]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/SignDocument/Controller/DigitalSignatureController.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/src/SignDocument/Controller/DigitalSignatureController.php b/backend/src/SignDocument/Controller/DigitalSignatureController.php index 419514f..8c971c8 100644 --- a/backend/src/SignDocument/Controller/DigitalSignatureController.php +++ b/backend/src/SignDocument/Controller/DigitalSignatureController.php @@ -4,7 +4,8 @@ declare(strict_types=1); namespace App\SignDocument\Controller; -use App\DigitalSignature\Controller\SignService; +error_reporting(E_ALL | E_STRICT); + use App\Infrastructure\Traits\ApiHelperTrait; use App\SignDocument\Api\Request\DigitalSignatureRequest; use App\SignDocument\Services\DigitalSignatureService; From c51d199b513dee2a23119563f47be8b8976d204f Mon Sep 17 00:00:00 2001 From: cherednik Date: Thu, 9 Jan 2025 20:00:11 +0400 Subject: [PATCH 11/20] =?UTF-8?q?DD-3602:=20[BACK].=20[=D0=94=D0=BE=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=BD=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20=D0=B2?= =?UTF-8?q?=D0=BE=D0=B4=D0=B8=D1=82=D0=B5=D0=BB=D1=8E=20=D1=81=20=D0=9A?= =?UTF-8?q?=D0=AD=D0=9F]=20-=20[=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D1=82=D1=8C=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BA=D1=83=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=B0=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20=D0=90=D0=9F=D0=98=20?= =?UTF-8?q?=D0=94=D0=B8=D0=B0=D0=B4=D0=BE=D0=BA]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/SignDocument/Controller/DigitalSignatureController.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/backend/src/SignDocument/Controller/DigitalSignatureController.php b/backend/src/SignDocument/Controller/DigitalSignatureController.php index 8c971c8..a2f6bd8 100644 --- a/backend/src/SignDocument/Controller/DigitalSignatureController.php +++ b/backend/src/SignDocument/Controller/DigitalSignatureController.php @@ -4,8 +4,6 @@ declare(strict_types=1); namespace App\SignDocument\Controller; -error_reporting(E_ALL | E_STRICT); - use App\Infrastructure\Traits\ApiHelperTrait; use App\SignDocument\Api\Request\DigitalSignatureRequest; use App\SignDocument\Services\DigitalSignatureService; From cea9bdedaf1fd8dbf737cef839e3710e6c13f901 Mon Sep 17 00:00:00 2001 From: cherednik Date: Fri, 10 Jan 2025 12:29:02 +0400 Subject: [PATCH 12/20] =?UTF-8?q?DD-3602:=20[BACK].=20[=D0=94=D0=BE=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=BD=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20=D0=B2?= =?UTF-8?q?=D0=BE=D0=B4=D0=B8=D1=82=D0=B5=D0=BB=D1=8E=20=D1=81=20=D0=9A?= =?UTF-8?q?=D0=AD=D0=9F]=20-=20[=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D1=82=D1=8C=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BA=D1=83=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=B0=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20=D0=90=D0=9F=D0=98=20?= =?UTF-8?q?=D0=94=D0=B8=D0=B0=D0=B4=D0=BE=D0=BA]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/.env | 11 ----------- .../Controller/DigitalSignatureController.php | 11 ++++------- 2 files changed, 4 insertions(+), 18 deletions(-) diff --git a/backend/.env b/backend/.env index ca3f4c9..aa658b2 100644 --- a/backend/.env +++ b/backend/.env @@ -13,14 +13,3 @@ DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=16&ch DOT_DOT_URL='http://dot-dot.local' API_TOKEN='secret' - -###> KONTUR_DIADOC### -API_KONTUR_DIADOC_END_POINT_URL=https://diadoc-api.kontur.ru -API_KONTUR_DIADOC_API_TOKEN=API-3701ccdb-7bdf-4f29-bbe0-3a0278eee913 -API_KONTUR_DIADOC_LOGIN=LOGIN -API_KONTUR_DIADOC_PASSWORD=PASSWORD -###> KONTUR_DIADOC_POST_MESSAGE_DIRECTION### -API_KONTUR_DIADOC_PMD_BOX_ID=c1a0d340-a481-49b2-ba21-d51dea59df55 -API_KONTUR_DIADOC_PMD_FROM_DEPT_ID=00000000-0000-0000-0000-000000000000 -API_KONTUR_DIADOC_PMD_TO_DEPT_ID=da0f3b33-ef70-41e9-8e9e-fb431a891ef4 -###< KONTUR_DIADOC### \ No newline at end of file diff --git a/backend/src/SignDocument/Controller/DigitalSignatureController.php b/backend/src/SignDocument/Controller/DigitalSignatureController.php index a2f6bd8..5baf49f 100644 --- a/backend/src/SignDocument/Controller/DigitalSignatureController.php +++ b/backend/src/SignDocument/Controller/DigitalSignatureController.php @@ -7,6 +7,7 @@ namespace App\SignDocument\Controller; use App\Infrastructure\Traits\ApiHelperTrait; use App\SignDocument\Api\Request\DigitalSignatureRequest; use App\SignDocument\Services\DigitalSignatureService; +use PHPUnit\Event\RuntimeException; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -26,12 +27,8 @@ class DigitalSignatureController extends AbstractController { $token = $request->server->get('HTTP_AUTHORIZATION'); - try { - return $this->createJsonResponse([ - 'base64' => $this->digitalSignatureService->getSignature($digitalSignatureRequest, $token), - ]); - } catch (Exception $exception) { - return $this->createJsonResponse([], $exception->getMessage(), 400); - } + return $this->createJsonResponse([ + 'hash' => $this->digitalSignatureService->getSignature($digitalSignatureRequest, $token), + ]); } } \ No newline at end of file From 2dd08fcaacf967b793084184888edcb7e3157af5 Mon Sep 17 00:00:00 2001 From: cherednik Date: Fri, 10 Jan 2025 13:31:54 +0400 Subject: [PATCH 13/20] =?UTF-8?q?DD-3602:=20[BACK].=20[=D0=94=D0=BE=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=BD=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20=D0=B2?= =?UTF-8?q?=D0=BE=D0=B4=D0=B8=D1=82=D0=B5=D0=BB=D1=8E=20=D1=81=20=D0=9A?= =?UTF-8?q?=D0=AD=D0=9F]=20-=20[=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D1=82=D1=8C=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BA=D1=83=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=B0=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20=D0=90=D0=9F=D0=98=20?= =?UTF-8?q?=D0=94=D0=B8=D0=B0=D0=B4=D0=BE=D0=BA]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/SignDocument/Controller/DigitalSignatureController.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/backend/src/SignDocument/Controller/DigitalSignatureController.php b/backend/src/SignDocument/Controller/DigitalSignatureController.php index 5baf49f..5e836f4 100644 --- a/backend/src/SignDocument/Controller/DigitalSignatureController.php +++ b/backend/src/SignDocument/Controller/DigitalSignatureController.php @@ -7,12 +7,10 @@ namespace App\SignDocument\Controller; use App\Infrastructure\Traits\ApiHelperTrait; use App\SignDocument\Api\Request\DigitalSignatureRequest; use App\SignDocument\Services\DigitalSignatureService; -use PHPUnit\Event\RuntimeException; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Annotation\Route; -use Exception; class DigitalSignatureController extends AbstractController { From 73d6b04a1077cf2e2094ad872ab050f6a355e884 Mon Sep 17 00:00:00 2001 From: cherednik Date: Mon, 10 Mar 2025 16:50:54 +0400 Subject: [PATCH 14/20] =?UTF-8?q?DD-3602:=20[BACK].=20[=D0=94=D0=BE=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=BD=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20=D0=B2?= =?UTF-8?q?=D0=BE=D0=B4=D0=B8=D1=82=D0=B5=D0=BB=D1=8E=20=D1=81=20=D0=9A?= =?UTF-8?q?=D0=AD=D0=9F]=20-=20[=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D1=82=D1=8C=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BA=D1=83=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=B0=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20=D0=90=D0=9F=D0=98=20?= =?UTF-8?q?=D0=94=D0=B8=D0=B0=D0=B4=D0=BE=D0=BA]=20-=20=D0=9F=D0=9E=D0=94?= =?UTF-8?q?=D0=9F=D0=98=D0=A1=D0=90=D0=9D=D0=98=D0=95=20=D0=9A=D0=A0=D0=98?= =?UTF-8?q?=D0=9F=D0=A2=D0=9E=20=D0=9F=D0=A0=D0=9E=20fix=20nginx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/nginx/default.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/nginx/default.conf b/docker/nginx/default.conf index 221860f..8e82b89 100644 --- a/docker/nginx/default.conf +++ b/docker/nginx/default.conf @@ -8,7 +8,7 @@ server { location ~* \.php$ { try_files $uri $uri/ /index.php last; fastcgi_split_path_info (.+?\.php)(/.*)$; - fastcgi_pass localhost:9000; + fastcgi_pass signer:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; From 484dd35faab86b9f84a2d8495e87d7f732605c84 Mon Sep 17 00:00:00 2001 From: cherednik Date: Mon, 10 Mar 2025 16:56:17 +0400 Subject: [PATCH 15/20] =?UTF-8?q?DD-3602:=20[BACK].=20[=D0=94=D0=BE=D0=B2?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=BD=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20=D0=B2?= =?UTF-8?q?=D0=BE=D0=B4=D0=B8=D1=82=D0=B5=D0=BB=D1=8E=20=D1=81=20=D0=9A?= =?UTF-8?q?=D0=AD=D0=9F]=20-=20[=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D1=82=D1=8C=20=D0=BE=D1=82=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BA=D1=83=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82?= =?UTF-8?q?=D0=B0=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20=D0=90=D0=9F=D0=98=20?= =?UTF-8?q?=D0=94=D0=B8=D0=B0=D0=B4=D0=BE=D0=BA]=20-=20=D0=9F=D0=9E=D0=94?= =?UTF-8?q?=D0=9F=D0=98=D0=A1=D0=90=D0=9D=D0=98=D0=95=20=D0=9A=D0=A0=D0=98?= =?UTF-8?q?=D0=9F=D0=A2=D0=9E=20=D0=9F=D0=A0=D0=9E=20fix=20nginx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/nginx/default.conf | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/docker/nginx/default.conf b/docker/nginx/default.conf index 8e82b89..e54f179 100644 --- a/docker/nginx/default.conf +++ b/docker/nginx/default.conf @@ -5,14 +5,16 @@ server { root /usr/src/signer/public; - location ~* \.php$ { - try_files $uri $uri/ /index.php last; - fastcgi_split_path_info (.+?\.php)(/.*)$; - fastcgi_pass signer:9000; - fastcgi_index index.php; + location / { + try_files $uri $uri/ /index.php?$args; + } + + location ~ \.php$ { include fastcgi_params; - fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - fastcgi_param PATH_INFO $fastcgi_path_info; + fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; + fastcgi_pass signer:9000; + try_files $uri =404; + fastcgi_index index.php; } location ~* .php/ { From 52d40c6249c7f2b6be352eac3d468555df54fde9 Mon Sep 17 00:00:00 2001 From: StSet Date: Fri, 21 Mar 2025 12:15:22 +0300 Subject: [PATCH 16/20] =?UTF-8?q?DDB-1753=20-=20=D0=B4=D0=BE=D1=80=D0=B0?= =?UTF-8?q?=D0=B1=D0=BE=D1=82=D0=BA=D0=B0=20=D1=84=D0=BE=D1=80=D0=BC=D0=B0?= =?UTF-8?q?=D1=82=D0=B0=20=D0=BE=D1=82=D0=B2=D0=B5=D1=82=D0=B0=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D1=81=D0=B5=D1=80=D0=B2=D0=B8=D1=81=D0=B0=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=B4=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../External/Api/BinaryStringFileResult.php | 12 ++++++++ .../Api/Response/DigitalSignatureResponse.php | 18 ++++++++++++ .../Controller/DigitalSignatureController.php | 6 ++-- .../Services/DigitalSignatureService.php | 28 +++++++++++++------ 4 files changed, 52 insertions(+), 12 deletions(-) create mode 100644 backend/src/SignDocument/Api/Response/DigitalSignatureResponse.php diff --git a/backend/src/Infrastructure/External/Api/BinaryStringFileResult.php b/backend/src/Infrastructure/External/Api/BinaryStringFileResult.php index 6331c2c..363ef74 100644 --- a/backend/src/Infrastructure/External/Api/BinaryStringFileResult.php +++ b/backend/src/Infrastructure/External/Api/BinaryStringFileResult.php @@ -4,6 +4,8 @@ declare(strict_types=1); namespace App\Infrastructure\External\Api; +use RuntimeException; + /** * Враппер бинарных фалов, при создании класса содает новый временный файл, * при необходимости сохраняет файл под новым именем @@ -23,4 +25,14 @@ class BinaryStringFileResult $this->tempFileName = sprintf('%s/%s_%s', sys_get_temp_dir(), 'Document', time()); file_put_contents($this->tempFileName, $content); } + + public function remove(): bool + { + if (file_exists($this->tempFileName)) { + unlink($this->tempFileName); + return true; + } + + throw new RuntimeException('Temp file not found'); + } } diff --git a/backend/src/SignDocument/Api/Response/DigitalSignatureResponse.php b/backend/src/SignDocument/Api/Response/DigitalSignatureResponse.php new file mode 100644 index 0000000..7392f76 --- /dev/null +++ b/backend/src/SignDocument/Api/Response/DigitalSignatureResponse.php @@ -0,0 +1,18 @@ +server->get('HTTP_AUTHORIZATION'); - return $this->createJsonResponse([ - 'hash' => $this->digitalSignatureService->getSignature($digitalSignatureRequest, $token), - ]); + return $this->createJsonResponseFromObject( + $this->digitalSignatureService->getSignature($digitalSignatureRequest, $token) + ); } } \ No newline at end of file diff --git a/backend/src/SignDocument/Services/DigitalSignatureService.php b/backend/src/SignDocument/Services/DigitalSignatureService.php index 6c9468b..7ff187e 100644 --- a/backend/src/SignDocument/Services/DigitalSignatureService.php +++ b/backend/src/SignDocument/Services/DigitalSignatureService.php @@ -4,22 +4,31 @@ declare(strict_types=1); namespace App\SignDocument\Services; +use App\Infrastructure\External\Api\BinaryStringFileResult; use App\SignDocument\Api\Api; use App\SignDocument\Api\ApiParams; use App\SignDocument\Api\Request\DigitalSignatureRequest; +use App\SignDocument\Api\Response\DigitalSignatureResponse; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; use Exception; use RuntimeException; class DigitalSignatureService { + private BinaryStringFileResult $document; + public function __construct( private readonly Api $api, private readonly ApiParams $apiParams, - private readonly RemoveExistingDocumentService $removeExistingDocumentService, ){ } - public function getSignature(DigitalSignatureRequest $request, string $token): string + + public function __destruct() + { + $this->document->remove(); + } + + public function getSignature(DigitalSignatureRequest $request, string $token): DigitalSignatureResponse { if ($_ENV['API_TOKEN'] !== $request->apiToken) { throw new AccessDeniedHttpException('Доступ запрещен'); @@ -28,16 +37,17 @@ class DigitalSignatureService $this->api->apiParams = $this->apiParams; try { - $document = $this->api->download($request->url, $token); + $this->document = $this->api->download($request->url, $token); - exec(sprintf('cp %s %s.pdf', $document->tempFileName, $document->tempFileName)); - exec(sprintf('cryptcp -sign -detached -der %s', $document->tempFileName . '.pdf')); + exec(sprintf('cp %s %s.pdf', $this->document->tempFileName, $this->document->tempFileName)); + exec(sprintf('cryptcp -sign -detached -der %s.pdf', $this->document->tempFileName)); - $response = base64_encode(file_get_contents($document->tempFileName . '.pdf.sgn')); + $response = base64_encode(file_get_contents($this->document->tempFileName . '.pdf.sgn')); - $this->removeExistingDocumentService->removeExistingDocument($document); - - return $response; + return new DigitalSignatureResponse( + hash: $response, + content: file_get_contents(sprintf('%s.pdf', $this->document->tempFileName)) + ); } catch (Exception $e) { throw new RuntimeException($e->getMessage()); } From 6943c9c41f9dbcec8fca64d07810269eb5ac723f Mon Sep 17 00:00:00 2001 From: StSet Date: Fri, 21 Mar 2025 12:27:37 +0300 Subject: [PATCH 17/20] =?UTF-8?q?DDB-1753=20-=20=D0=B4=D0=BE=D1=80=D0=B0?= =?UTF-8?q?=D0=B1=D0=BE=D1=82=D0=BA=D0=B0=20=D1=84=D0=BE=D1=80=D0=BC=D0=B0?= =?UTF-8?q?=D1=82=D0=B0=20=D0=BE=D1=82=D0=B2=D0=B5=D1=82=D0=B0=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D1=81=D0=B5=D1=80=D0=B2=D0=B8=D1=81=D0=B0=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=B4=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?-=20fix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/Infrastructure/Api/Response/AbstractResponse.php | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 backend/src/Infrastructure/Api/Response/AbstractResponse.php diff --git a/backend/src/Infrastructure/Api/Response/AbstractResponse.php b/backend/src/Infrastructure/Api/Response/AbstractResponse.php new file mode 100644 index 0000000..13f062a --- /dev/null +++ b/backend/src/Infrastructure/Api/Response/AbstractResponse.php @@ -0,0 +1,9 @@ + createNewJsonResponse + +abstract class AbstractResponse +{ +} From 82ae1cbdf8e18f25de337c504b2c532e6abbfb6c Mon Sep 17 00:00:00 2001 From: StSet Date: Fri, 21 Mar 2025 12:32:57 +0300 Subject: [PATCH 18/20] =?UTF-8?q?DDB-1753=20-=20=D0=B4=D0=BE=D1=80=D0=B0?= =?UTF-8?q?=D0=B1=D0=BE=D1=82=D0=BA=D0=B0=20=D1=84=D0=BE=D1=80=D0=BC=D0=B0?= =?UTF-8?q?=D1=82=D0=B0=20=D0=BE=D1=82=D0=B2=D0=B5=D1=82=D0=B0=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D1=81=D0=B5=D1=80=D0=B2=D0=B8=D1=81=D0=B0=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=B4=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?-=20fix?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controller/DigitalSignatureController.php | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/backend/src/SignDocument/Controller/DigitalSignatureController.php b/backend/src/SignDocument/Controller/DigitalSignatureController.php index 43877c9..131fd7f 100644 --- a/backend/src/SignDocument/Controller/DigitalSignatureController.php +++ b/backend/src/SignDocument/Controller/DigitalSignatureController.php @@ -25,8 +25,13 @@ class DigitalSignatureController extends AbstractController { $token = $request->server->get('HTTP_AUTHORIZATION'); - return $this->createJsonResponseFromObject( - $this->digitalSignatureService->getSignature($digitalSignatureRequest, $token) + $response = $this->digitalSignatureService->getSignature($digitalSignatureRequest, $token); + + return $this->createJsonResponse( + [ + 'hash' => $response->hash, + 'content' => $response->content, + ] ); } } \ No newline at end of file From 6533368534f281c9e50135973d9e27cb69eccca6 Mon Sep 17 00:00:00 2001 From: cherednik Date: Fri, 21 Mar 2025 13:40:10 +0400 Subject: [PATCH 19/20] DDB-1753: fix response --- .../src/SignDocument/Controller/DigitalSignatureController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/SignDocument/Controller/DigitalSignatureController.php b/backend/src/SignDocument/Controller/DigitalSignatureController.php index 131fd7f..a99548a 100644 --- a/backend/src/SignDocument/Controller/DigitalSignatureController.php +++ b/backend/src/SignDocument/Controller/DigitalSignatureController.php @@ -30,7 +30,7 @@ class DigitalSignatureController extends AbstractController return $this->createJsonResponse( [ 'hash' => $response->hash, - 'content' => $response->content, + 'content' => base64_encode($response->content), ] ); } From a4a12752b8d9afd4f19fc5d3d843a040ec4a6f7c Mon Sep 17 00:00:00 2001 From: cherednik Date: Fri, 21 Mar 2025 13:43:09 +0400 Subject: [PATCH 20/20] DDB-1753: fix response --- .../Controller/DigitalSignatureController.php | 9 ++------- .../SignDocument/Services/DigitalSignatureService.php | 2 +- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/backend/src/SignDocument/Controller/DigitalSignatureController.php b/backend/src/SignDocument/Controller/DigitalSignatureController.php index a99548a..43877c9 100644 --- a/backend/src/SignDocument/Controller/DigitalSignatureController.php +++ b/backend/src/SignDocument/Controller/DigitalSignatureController.php @@ -25,13 +25,8 @@ class DigitalSignatureController extends AbstractController { $token = $request->server->get('HTTP_AUTHORIZATION'); - $response = $this->digitalSignatureService->getSignature($digitalSignatureRequest, $token); - - return $this->createJsonResponse( - [ - 'hash' => $response->hash, - 'content' => base64_encode($response->content), - ] + return $this->createJsonResponseFromObject( + $this->digitalSignatureService->getSignature($digitalSignatureRequest, $token) ); } } \ No newline at end of file diff --git a/backend/src/SignDocument/Services/DigitalSignatureService.php b/backend/src/SignDocument/Services/DigitalSignatureService.php index 7ff187e..9ad6385 100644 --- a/backend/src/SignDocument/Services/DigitalSignatureService.php +++ b/backend/src/SignDocument/Services/DigitalSignatureService.php @@ -46,7 +46,7 @@ class DigitalSignatureService return new DigitalSignatureResponse( hash: $response, - content: file_get_contents(sprintf('%s.pdf', $this->document->tempFileName)) + content: base64_encode(file_get_contents(sprintf('%s.pdf', $this->document->tempFileName))) ); } catch (Exception $e) { throw new RuntimeException($e->getMessage());