diff options
author | Joas Schilling <coding@schilljs.com> | 2022-09-14 09:40:32 +0300 |
---|---|---|
committer | Joas Schilling <coding@schilljs.com> | 2022-09-14 10:02:12 +0300 |
commit | cf58a31c928174166aab6bfdf81c9a99e6308b39 (patch) | |
tree | c138745e8ef73884d6332a6b9eb7624b6dcb441c /lib | |
parent | 17db5d12d9aceab08d3efa3b4155bf81d1d91e6b (diff) |
Reset the poll and vote author information to be GDPR compliant
Signed-off-by: Joas Schilling <coding@schilljs.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Listener/UserDeletedListener.php | 8 | ||||
-rw-r--r-- | lib/Service/PollService.php | 20 |
2 files changed, 27 insertions, 1 deletions
diff --git a/lib/Listener/UserDeletedListener.php b/lib/Listener/UserDeletedListener.php index 17a589f4c..229616ecb 100644 --- a/lib/Listener/UserDeletedListener.php +++ b/lib/Listener/UserDeletedListener.php @@ -24,15 +24,19 @@ declare(strict_types=1); namespace OCA\Talk\Listener; use OCA\Talk\Manager; +use OCA\Talk\Model\Attendee; +use OCA\Talk\Service\PollService; use OCP\EventDispatcher\Event; use OCP\EventDispatcher\IEventListener; use OCP\User\Events\UserDeletedEvent; class UserDeletedListener implements IEventListener { private Manager $manager; + private PollService $pollService; - public function __construct(Manager $manager) { + public function __construct(Manager $manager, PollService $pollService) { $this->manager = $manager; + $this->pollService = $pollService; } public function handle(Event $event): void { @@ -43,5 +47,7 @@ class UserDeletedListener implements IEventListener { $user = $event->getUser(); $this->manager->removeUserFromAllRooms($user); + + $this->pollService->neutralizeDeletedUser(Attendee::ACTOR_USERS, $user->getUID()); } } diff --git a/lib/Service/PollService.php b/lib/Service/PollService.php index 78cdb87fc..10f6cdda1 100644 --- a/lib/Service/PollService.php +++ b/lib/Service/PollService.php @@ -333,4 +333,24 @@ class PollService { ->andWhere($update->expr()->eq('actor_id', $update->createNamedParameter($actorId))); $update->executeStatement(); } + + public function neutralizeDeletedUser(string $actorType, string $actorId): void { + $update = $this->connection->getQueryBuilder(); + $update->update('talk_polls') + ->set('display_name', $update->createNamedParameter('')) + ->set('actor_type', $update->createNamedParameter('deleted_users')) + ->set('actor_id', $update->createNamedParameter('deleted_users')) + ->where($update->expr()->eq('actor_type', $update->createNamedParameter($actorType))) + ->andWhere($update->expr()->eq('actor_id', $update->createNamedParameter($actorId))); + $update->executeStatement(); + + $update = $this->connection->getQueryBuilder(); + $update->update('talk_poll_votes') + ->set('display_name', $update->createNamedParameter('')) + ->set('actor_type', $update->createNamedParameter('deleted_users')) + ->set('actor_id', $update->createNamedParameter('deleted_users')) + ->where($update->expr()->eq('actor_type', $update->createNamedParameter($actorType))) + ->andWhere($update->expr()->eq('actor_id', $update->createNamedParameter($actorId))); + $update->executeStatement(); + } } |