diff --git a/src/Controller/RegistrationController.php b/src/Controller/RegistrationController.php
index d5df813b2214fedaca035855bf7ccf4a8717b038..faf3031cd5bba07f1c84c359574d3b02eadb83b8 100644
--- a/src/Controller/RegistrationController.php
+++ b/src/Controller/RegistrationController.php
@@ -2,8 +2,12 @@
 
 namespace App\Controller;
 
+use App\Entity\Capsule;
+use App\Entity\PendingEditorInvitation;
 use App\Entity\User;
 use App\Form\RegistrationFormType;
+use App\Repository\CapsuleRepository;
+use App\Repository\PendingEditorInvitationRepository;
 use App\Repository\UserRepository;
 use App\Security\EmailVerifier;
 use Doctrine\ORM\EntityManagerInterface;
@@ -12,7 +16,6 @@ use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\RequestStack;
 use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\Mime\Address;
 use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
 use Symfony\Component\Routing\Annotation\Route;
 use Symfony\Contracts\Translation\TranslatorInterface;
@@ -22,13 +25,16 @@ class RegistrationController extends AbstractController
 {
     private EmailVerifier $emailVerifier;
     private RequestStack $requestStack;
+    private EntityManagerInterface $entity_manager;
 
     public function __construct(
         EmailVerifier $emailVerifier,
-        RequestStack $requestStack
+        RequestStack $requestStack,
+        EntityManagerInterface $entity_manager
     ) {
         $this->emailVerifier = $emailVerifier;
         $this->requestStack = $requestStack;
+        $this->entity_manager = $entity_manager;
     }
 
     /**
@@ -36,8 +42,7 @@ class RegistrationController extends AbstractController
      */
     public function register(
         Request $request,
-        UserPasswordHasherInterface $userPasswordHasher,
-        EntityManagerInterface $entityManager
+        UserPasswordHasherInterface $userPasswordHasher
     ): Response {
         if ($this->getUser()) {
             return $this->redirectToRoute('capsule_list');
@@ -58,8 +63,8 @@ class RegistrationController extends AbstractController
                 )
             );
 
-            $entityManager->persist($user);
-            $entityManager->flush();
+            $this->entity_manager->persist($user);
+            $this->entity_manager->flush();
 
             // generate a signed url and email it to the user
             $this->emailVerifier->sendEmailConfirmation(
@@ -72,8 +77,6 @@ class RegistrationController extends AbstractController
                     ->htmlTemplate('registration/confirmation_email.html.twig')
             );
 
-            // do anything else you need here, like send an email
-            // return $this->redirectToRoute('app_login');
             $this->requestStack->getSession()->set('userid', $user->getId());
             return $this->redirectToRoute('app_register_mail_sent');
         }
@@ -89,6 +92,8 @@ class RegistrationController extends AbstractController
     public function verifyUserEmail(
         Request $request,
         UserRepository $userRepository,
+        PendingEditorInvitationRepository $pending_editor_invitation_repository,
+        CapsuleRepository $capsule_repository,
         TranslatorInterface $translator
     ): Response {
         $id = $request->get('id');
@@ -112,6 +117,12 @@ class RegistrationController extends AbstractController
             return $this->redirectToRoute('app_register');
         }
 
+        $this->addCapsuleToConfirmedPreviousPendingEditor(
+            $user,
+            $pending_editor_invitation_repository,
+            $capsule_repository
+        );
+
         $this->addFlash(
             'email_verified_success',
             $translator->trans('registration.email_verified_success')
@@ -133,4 +144,58 @@ class RegistrationController extends AbstractController
             ['user' =>  $user]
         );
     }
+
+    private function addCapsuleToConfirmedPreviousPendingEditor(
+        User $user,
+        PendingEditorInvitationRepository $pending_editor_invitation_repository,
+        CapsuleRepository $capsule_repository
+    ): void {
+        $pending_editor_invitations = $pending_editor_invitation_repository->findBy(['email' => $user->getEmail()]);
+
+        if ($pending_editor_invitations == null) {
+            return;
+        }
+
+        $capsules_ids = $this->removeInvitations($pending_editor_invitations);
+        $this->addEditorToCapsules($capsules_ids, $user, $capsule_repository);
+    }
+
+    /**
+     * @param array<PendingEditorInvitation> $pending_editor_invitations
+     * @return array<int>
+     */
+    private function removeInvitations(array $pending_editor_invitations): array
+    {
+        $capsules_ids = [];
+
+        foreach ($pending_editor_invitations as $invitation) {
+            if (! $invitation instanceof PendingEditorInvitation) {
+                return $capsules_ids;
+            }
+            $capsules_ids[] = $invitation->getCapsuleId();
+            $this->entity_manager->remove($invitation);
+        }
+
+        return $capsules_ids;
+    }
+
+    /**
+     * @param array<int> $capsules_ids
+     */
+    private function addEditorToCapsules(
+        array $capsules_ids,
+        User $user,
+        CapsuleRepository $capsule_repository
+    ): void {
+        $capsules = $capsule_repository->findBy(['id' => $capsules_ids]);
+
+        foreach ($capsules as $capsule) {
+            if (! $capsule instanceof Capsule) {
+                return;
+            }
+            $capsule->addEditor($user);
+            $this->entity_manager->persist($capsule);
+        }
+        $this->entity_manager->flush();
+    }
 }
diff --git a/src/Entity/PendingEditorInvitation.php b/src/Entity/PendingEditorInvitation.php
new file mode 100644
index 0000000000000000000000000000000000000000..b0bb5da206b3214717712efe4baf401eb146e43d
--- /dev/null
+++ b/src/Entity/PendingEditorInvitation.php
@@ -0,0 +1,61 @@
+<?php
+
+namespace App\Entity;
+
+use App\Repository\PendingEditorInvitationRepository;
+use Doctrine\ORM\Mapping as ORM;
+
+/**
+ * @ORM\Table(name="invitation_editeur_capsule")
+ * @ORM\Entity(repositoryClass=PendingEditorInvitationRepository::class)
+ */
+class PendingEditorInvitation
+{
+    /**
+     * @ORM\Id
+     * @ORM\GeneratedValue
+     * @ORM\Column(type="integer")
+     */
+    private int $id;
+
+    /**
+     * @ORM\Column(name="capsule_id", type="integer", nullable=false)
+     * @ORM\ManyToOne(targetEntity="App\Entity\Capsule", inversedBy="id")
+     * @ORM\JoinColumn(name="capsule_id", referencedColumnName="id")
+     */
+    private int $capsule_id;
+
+    /**
+     * @ORM\Column(type="string", length=255)
+     */
+    private string $email;
+
+    public function getId(): int
+    {
+        return $this->id;
+    }
+
+    public function getCapsuleId(): int
+    {
+        return $this->capsule_id;
+    }
+
+    public function setCapsuleId(int $capsule_id): self
+    {
+        $this->capsule_id = $capsule_id;
+
+        return $this;
+    }
+
+    public function getEmail(): string
+    {
+        return $this->email;
+    }
+
+    public function setEmail(string $email): self
+    {
+        $this->email = $email;
+
+        return $this;
+    }
+}
diff --git a/src/Repository/PendingEditorInvitationRepository.php b/src/Repository/PendingEditorInvitationRepository.php
new file mode 100644
index 0000000000000000000000000000000000000000..e891144dd03e5b31229c3707ea86c82f6bca48a8
--- /dev/null
+++ b/src/Repository/PendingEditorInvitationRepository.php
@@ -0,0 +1,62 @@
+<?php
+
+namespace App\Repository;
+
+use App\Entity\PendingEditorInvitation;
+use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
+use Doctrine\Persistence\ManagerRegistry;
+
+/**
+ * @method PendingEditorInvitation|null find($id, $lockMode = null, $lockVersion = null)
+ * @method PendingEditorInvitation|null findOneBy(array $criteria, array $orderBy = null)
+ * @method PendingEditorInvitation[]    findAll()
+ * @method PendingEditorInvitation[]    findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
+ */
+class PendingEditorInvitationRepository extends ServiceEntityRepository
+{
+    public function __construct(ManagerRegistry $registry)
+    {
+        parent::__construct($registry, PendingEditorInvitation::class);
+    }
+
+    /**
+     * @return array<PendingEditorInvitation>
+     */
+    public function getInvitationByCapsule(int $capsule_id): array
+    {
+        $query = $this->createQueryBuilder('i')
+            ->where("i.capsuleId like :capId")
+            ->setParameter("capId", $capsule_id)
+            ->getQuery();
+        return $query->getArrayResult();
+    }
+
+    // /**
+    //  * @return PendingEditorInvitation[] Returns an array of PendingEditorInvitation objects
+    //  */
+    /*
+    public function findByExampleField($value)
+    {
+        return $this->createQueryBuilder('p')
+            ->andWhere('p.exampleField = :val')
+            ->setParameter('val', $value)
+            ->orderBy('p.id', 'ASC')
+            ->setMaxResults(10)
+            ->getQuery()
+            ->getResult()
+        ;
+    }
+    */
+
+    /*
+    public function findOneBySomeField($value): ?PendingEditorInvitation
+    {
+        return $this->createQueryBuilder('p')
+            ->andWhere('p.exampleField = :val')
+            ->setParameter('val', $value)
+            ->getQuery()
+            ->getOneOrNullResult()
+        ;
+    }
+    */
+}