Skip to content

Commit 00680d9

Browse files
committed
Refactor setup of Doctrine type for encrypted text columns
The setup was currently broken due to EasyAdmin's AdminRouterSubscriber::onKernelRequestPrettyUrls event listener having a higher priority than this listener. In addition, the existing EncryptionListener was only called when initialized through an HTTP request from the Symfony kernel. This change should enable the encryption everywhere.
1 parent 5a768b0 commit 00680d9

File tree

2 files changed

+42
-34
lines changed

2 files changed

+42
-34
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
3+
namespace CodedMonkey\Dirigent\Doctrine\Middleware;
4+
5+
use CodedMonkey\Dirigent\Doctrine\Type\EncryptedTextType;
6+
use CodedMonkey\Dirigent\Encryption\Encryption;
7+
use Doctrine\Bundle\DoctrineBundle\Attribute\AsMiddleware;
8+
use Doctrine\DBAL\Driver;
9+
use Doctrine\DBAL\Driver\Connection;
10+
use Doctrine\DBAL\Driver\Middleware;
11+
use Doctrine\DBAL\Driver\Middleware\AbstractDriverMiddleware;
12+
use Doctrine\DBAL\Types\Type;
13+
14+
/**
15+
* Configures EncryptedTextType by manually injecting the encryption utility after initializing Doctrine.
16+
*/
17+
#[AsMiddleware]
18+
readonly class EncryptionMiddleware implements Middleware
19+
{
20+
public function __construct(private Encryption $encryption)
21+
{
22+
}
23+
24+
public function wrap(Driver $driver): Driver
25+
{
26+
return new class($driver, $this->encryption) extends AbstractDriverMiddleware {
27+
public function __construct(Driver $driver, private readonly Encryption $encryption)
28+
{
29+
parent::__construct($driver);
30+
}
31+
32+
public function connect(array $params): Connection
33+
{
34+
/** @var EncryptedTextType $doctrineType */
35+
$doctrineType = Type::getType(EncryptedTextType::TYPE);
36+
$doctrineType->setEncryptionUtility($this->encryption);
37+
38+
return parent::connect($params);
39+
}
40+
};
41+
}
42+
}

src/EventListener/EncryptionListener.php

Lines changed: 0 additions & 34 deletions
This file was deleted.

0 commit comments

Comments
 (0)