* Use of this software is governed by the Business Source License included in the LICENSE file and at https://getparthenon.com/docs/next/license.
9
*
10
* Change Date: TBD ( 3 years after 2.0.0 release )
11
*
12
* On the date above, in accordance with the Business Source License, use of this software will be governed by the open source license specified in the LICENSE file.
13
*/
14
15
namespace Parthenon\User\Gdpr\Deletion;
16
17
use Parthenon\Common\LoggerAwareTrait;
18
use Parthenon\User\Entity\UserInterface;
19
20
final class DeletionExecutor
21
{
22
use LoggerAwareTrait;
23
24
private VoterInterface $voter;
25
private DeleterInterface $deleter;
26
27
public function __construct(VoterInterface $voter, DeleterInterface $deleter)
28
{
29
$this->voter = $voter;
30
$this->deleter = $deleter;
31
}
32
33
public function delete(UserInterface $user): void
34
{
35
if (!$this->voter->canDelete($user)) {
36
$this->getLogger()->info("User can't be deleted.", ['user_id' => (string) $user->getId()]);