From 2b52d18da53e156677c2a566772372c8dbc9425f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Melaine=20G=C3=A9rard?= Date: Sun, 26 Jan 2025 14:10:11 +0100 Subject: [PATCH 01/15] :sparkles: ajout parent dir --- composer.json | 2 +- composer.lock | 14 ++-- migrations/Version20250126120344.php | 32 +++++++ src/Controller/FilesController.php | 73 ++++++++-------- src/Entity/ParentDirectory.php | 41 +++++++++ src/Entity/ParentDirectoryPermission.php | 84 +++++++++++++++++++ .../ParentDirectoryPermissionRepository.php | 45 ++++++++++ src/Security/Voter/FileVoter.php | 17 +++- src/Twig/Extension/EntityExtension.php | 20 +++++ src/Twig/Runtime/EntityExtensionRuntime.php | 22 +++++ templates/files/index.html.twig | 11 +++ 11 files changed, 312 insertions(+), 49 deletions(-) create mode 100644 migrations/Version20250126120344.php create mode 100644 src/Entity/ParentDirectoryPermission.php create mode 100644 src/Repository/ParentDirectoryPermissionRepository.php create mode 100644 src/Twig/Extension/EntityExtension.php create mode 100644 src/Twig/Runtime/EntityExtensionRuntime.php diff --git a/composer.json b/composer.json index f2aad5b..7a47ce4 100755 --- a/composer.json +++ b/composer.json @@ -51,7 +51,7 @@ "symfony/web-link": "7.2.*", "symfony/yaml": "7.2.*", "symfonycasts/reset-password-bundle": "^1.23.1", - "symfonycasts/tailwind-bundle": "^0.7.0", + "symfonycasts/tailwind-bundle": "^0.7.1", "tales-from-a-dev/flowbite-bundle": "^0.7.1", "twig/extra-bundle": "^2.12|^3.18", "twig/twig": "^2.12|^3.18" diff --git a/composer.lock b/composer.lock index ee043ef..61c30ca 100644 --- a/composer.lock +++ b/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": "13818ed85d08a0fb5be7425a3277b4c7", + "content-hash": "d8ceef27639b2bdc9c0081bebf3a7320", "packages": [ { "name": "composer/semver", @@ -8217,16 +8217,16 @@ }, { "name": "symfonycasts/tailwind-bundle", - "version": "v0.7.0", + "version": "v0.7.1", "source": { "type": "git", "url": "https://github.com/SymfonyCasts/tailwind-bundle.git", - "reference": "5c0e36694a49f017a06d0331e45ca384fc5f7677" + "reference": "81c9e6ff2bb1a95e67fc6af04ca87fccdcf55aa4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/SymfonyCasts/tailwind-bundle/zipball/5c0e36694a49f017a06d0331e45ca384fc5f7677", - "reference": "5c0e36694a49f017a06d0331e45ca384fc5f7677", + "url": "https://api.github.com/repos/SymfonyCasts/tailwind-bundle/zipball/81c9e6ff2bb1a95e67fc6af04ca87fccdcf55aa4", + "reference": "81c9e6ff2bb1a95e67fc6af04ca87fccdcf55aa4", "shasum": "" }, "require": { @@ -8266,9 +8266,9 @@ ], "support": { "issues": "https://github.com/SymfonyCasts/tailwind-bundle/issues", - "source": "https://github.com/SymfonyCasts/tailwind-bundle/tree/v0.7.0" + "source": "https://github.com/SymfonyCasts/tailwind-bundle/tree/v0.7.1" }, - "time": "2025-01-22T16:31:51+00:00" + "time": "2025-01-23T14:54:07+00:00" }, { "name": "tales-from-a-dev/flowbite-bundle", diff --git a/migrations/Version20250126120344.php b/migrations/Version20250126120344.php new file mode 100644 index 0000000..904687d --- /dev/null +++ b/migrations/Version20250126120344.php @@ -0,0 +1,32 @@ +addSql('CREATE TABLE parent_directory_permission (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, role VARCHAR(255) NOT NULL, read BOOLEAN NOT NULL, write BOOLEAN NOT NULL, parent_directory_id INTEGER NOT NULL, CONSTRAINT FK_F93986627CFA5BB1 FOREIGN KEY (parent_directory_id) REFERENCES parent_directory (id) NOT DEFERRABLE INITIALLY IMMEDIATE)'); + $this->addSql('CREATE INDEX IDX_F93986627CFA5BB1 ON parent_directory_permission (parent_directory_id)'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('DROP TABLE parent_directory_permission'); + } +} diff --git a/src/Controller/FilesController.php b/src/Controller/FilesController.php index f20b871..1d6a90a 100755 --- a/src/Controller/FilesController.php +++ b/src/Controller/FilesController.php @@ -43,11 +43,7 @@ class FilesController extends AbstractController public function index(Filesystem $defaultAdapter, UrlGeneratorInterface $urlGenerator, #[MapQueryParameter('path')] string $path = ''): Response { $path = $this->normalizePath($path); - /** - * @var User $user - */ - $user = $this->getUser(); - + $this->getUser(); if ('' !== $path) { $parentDir = $this->parentDirectoryRepository->findOneBy(['name' => $path]); @@ -55,9 +51,7 @@ class FilesController extends AbstractController throw $this->createNotFoundException("Ce dossier n'existe pas !"); } - - - if (!$this->isGranted('file', $parentDir)) { + if (!$this->isGranted('file_read', $parentDir)) { throw $this->createNotFoundException("Vous n'avez pas le droit d'accéder à ce dossier !"); } } @@ -72,15 +66,15 @@ class FilesController extends AbstractController // On vérifie si l'utilisateur a le droit d'accéder au fichier (vérifier que owner_role du parentDirectory correspondant est bien le folderRole de l'utilisateur) $pathFile = explode('/', (string) $file['path']); if ('' !== $path) { - $parentDir = $this->parentDirectoryRepository->findOneBy(['name' => $pathFile[0]]); + $parentDirectory = $this->parentDirectoryRepository->findOneBy(['name' => $pathFile[0]]); - if (null === $parentDir || !$this->isGranted('file', $parentDir)) { + if (null === $parentDirectory || !$this->isGranted('file_read', $parentDirectory)) { continue; } } elseif ('file' !== $file['type']) { - $parentDir = $this->parentDirectoryRepository->findOneBy(['name' => $filename]); + $parentDirectory = $this->parentDirectoryRepository->findOneBy(['name' => $filename]); - if (null === $parentDir || !$this->isGranted('file', $parentDir)) { + if (null === $parentDirectory || !$this->isGranted('file_read', $parentDirectory)) { continue; } } @@ -108,6 +102,7 @@ class FilesController extends AbstractController return $this->render('files/index.html.twig', [ 'files' => $realFiles, 'path' => $path, + 'parentDir' => $parentDir ?? null, ]); } @@ -134,7 +129,7 @@ class FilesController extends AbstractController */ $user = $this->getUser(); - if (!$this->isGranted('file', $parentDir)) { + if (!$this->isGranted('file_read', $parentDir)) { throw $this->createNotFoundException("Vous n'avez pas le droit d'accéder à ce fichier !"); } } @@ -167,18 +162,16 @@ class FilesController extends AbstractController #[IsGranted('ROLE_USER')] public function fileDelete(Filesystem $defaultAdapter, #[MapQueryParameter('filename')] string $filename): RedirectResponse { - /** - * @var User $user - */ - $user = $this->getUser(); + $this->getUser(); $file = $this->normalizePath($filename); $realPath = explode('/', $file); + $parentDir = null; if (count($realPath) > 1) { $parentDir = $this->parentDirectoryRepository->findOneBy(['name' => $realPath[0]]); - if (null === $parentDir || !$this->isGranted('file', $parentDir)) { + if (null === $parentDir || !$this->isGranted('file_write', $parentDir)) { throw $this->createNotFoundException("Vous n'avez pas le droit de supprimer ce fichier !"); } } @@ -204,28 +197,35 @@ class FilesController extends AbstractController public function directoryDelete(Filesystem $defaultAdapter, #[MapQueryParameter('path')] string $path): RedirectResponse { $path = $this->normalizePath($path); - /** - * @var User $user - */ - $user = $this->getUser(); + $this->getUser(); $realPath = explode('/', $path); $parentDir = $this->parentDirectoryRepository->findOneBy(['name' => $realPath[0]]); - if (null === $parentDir || !$this->isGranted('file', $parentDir)) { + if (null === $parentDir || !$this->isGranted('file_write', $parentDir)) { throw $this->createNotFoundException("Vous n'avez pas le droit de supprimer ce dossier !"); } if ('' !== $path && !str_starts_with($path, '.') && $defaultAdapter->directoryExists($path)) { $defaultAdapter->deleteDirectory($path); + if ($parentDir->getName() === $path) { + $this->entityManager->remove($parentDir); + $this->entityManager->flush(); + } $this->addFlash('success', 'Le dossier a bien été supprimé.'); } else { $this->addFlash('error', 'Le dossier n\'existe pas.'); } + $newPath = dirname($path); + + if ('.' === $newPath) { + $newPath = ''; + } + return $this->redirectToRoute('app_files_index', [ - 'path' => dirname($path), + 'path' => $newPath, ]); } @@ -237,10 +237,7 @@ class FilesController extends AbstractController public function rename(#[MapQueryParameter('path')] string $filepath, Request $request, Filesystem $defaultAdapter): Response { $filepath = $this->normalizePath($filepath); - /** - * @var User $user - */ - $user = $this->getUser(); + $this->getUser(); if ('' === $filepath || str_starts_with($filepath, '.') || !$defaultAdapter->fileExists($filepath)) { throw $this->createNotFoundException("Ce fichier n'existe pas !"); @@ -251,7 +248,7 @@ class FilesController extends AbstractController if (count($realPath) > 1) { $parentDir = $this->parentDirectoryRepository->findOneBy(['name' => $realPath[0]]); - if (null === $parentDir || !$this->isGranted('file', $parentDir)) { + if (null === $parentDir || !$this->isGranted('file_write', $parentDir)) { throw $this->createNotFoundException("Vous n'avez pas le droit de renommer ce fichier !"); } } @@ -302,7 +299,7 @@ class FilesController extends AbstractController if (count($realPath) > 1) { $parentDir = $this->parentDirectoryRepository->findOneBy(['name' => $realPath[0]]); - if (null === $parentDir || !$this->isGranted('file', $parentDir)) { + if (null === $parentDir || !$this->isGranted('file_write', $parentDir)) { throw $this->createNotFoundException("Vous n'avez pas le droit de créer de sous-dossier dans ce dossier !"); } } @@ -368,15 +365,12 @@ class FilesController extends AbstractController public function renameDirectory(#[MapQueryParameter('path')] string $filepath, Request $request, Filesystem $defaultAdapter): Response { $filepath = $this->normalizePath($filepath); - /** - * @var User $user - */ - $user = $this->getUser(); + $this->getUser(); $realPath = explode('/', $filepath); $parentDir = $this->parentDirectoryRepository->findOneBy(['name' => $realPath[0]]); - if (null === $parentDir || !$this->isGranted('file', $parentDir)) { + if (null === $parentDir || !$this->isGranted('file_write', $parentDir)) { throw $this->createNotFoundException("Vous n'avez pas le droit de renommer ce dossier !"); } @@ -423,10 +417,7 @@ class FilesController extends AbstractController { $path = $this->normalizePath($path); - /** - * @var User $user - */ - $user = $this->getUser(); + $this->getUser(); if ('' === $path) { throw $this->createNotFoundException("Vous ne pouvez pas uploader de fichier à la racine !"); @@ -435,7 +426,7 @@ class FilesController extends AbstractController $realPath = explode('/', $path); $parentDir = $this->parentDirectoryRepository->findOneBy(['name' => $realPath[0]]); - if (null === $parentDir || !$this->isGranted('file', $parentDir)) { + if (null === $parentDir || !$this->isGranted('file_write', $parentDir)) { throw $this->createNotFoundException("Vous n'avez pas le droit d'uploader des fichiers dans ce dossier !"); } @@ -478,6 +469,8 @@ class FilesController extends AbstractController $path = trim($path, '/'); // On retire les chemins relatifs $path = str_replace('..', '', $path); + // On retire les . qui sont seul dans la chaîne, en vérifiant qu'il n'y a pas de lettre avant ou après + $path = preg_replace('/(? + */ + #[ORM\OneToMany(targetEntity: ParentDirectoryPermission::class, mappedBy: 'parentDirectory', orphanRemoval: true)] + private Collection $parentDirectoryPermissions; + + public function __construct() + { + $this->parentDirectoryPermissions = new ArrayCollection(); + } + public function getId(): ?int { return $this->id; @@ -81,4 +94,32 @@ class ParentDirectory return $this; } + + /** + * @return Collection + */ + public function getParentDirectoryPermissions(): Collection + { + return $this->parentDirectoryPermissions; + } + + public function addParentDirectoryPermission(ParentDirectoryPermission $parentDirectoryPermission): static + { + if (!$this->parentDirectoryPermissions->contains($parentDirectoryPermission)) { + $this->parentDirectoryPermissions->add($parentDirectoryPermission); + $parentDirectoryPermission->setParentDirectory($this); + } + + return $this; + } + + public function removeParentDirectoryPermission(ParentDirectoryPermission $parentDirectoryPermission): static + { + // set the owning side to null (unless already changed) + if ($this->parentDirectoryPermissions->removeElement($parentDirectoryPermission) && $parentDirectoryPermission->getParentDirectory() === $this) { + $parentDirectoryPermission->setParentDirectory(null); + } + + return $this; + } } diff --git a/src/Entity/ParentDirectoryPermission.php b/src/Entity/ParentDirectoryPermission.php new file mode 100644 index 0000000..f3269bc --- /dev/null +++ b/src/Entity/ParentDirectoryPermission.php @@ -0,0 +1,84 @@ +id; + } + + public function getRole(): ?RoleEnum + { + return $this->role; + } + + public function setRole(RoleEnum $role): static + { + $this->role = $role; + + return $this; + } + + public function isRead(): ?bool + { + return $this->read; + } + + public function setRead(bool $read): static + { + $this->read = $read; + + return $this; + } + + public function isWrite(): ?bool + { + return $this->write; + } + + public function setWrite(bool $write): static + { + $this->write = $write; + + return $this; + } + + public function getParentDirectory(): ?ParentDirectory + { + return $this->parentDirectory; + } + + public function setParentDirectory(?ParentDirectory $parentDirectory): static + { + $this->parentDirectory = $parentDirectory; + + return $this; + } +} diff --git a/src/Repository/ParentDirectoryPermissionRepository.php b/src/Repository/ParentDirectoryPermissionRepository.php new file mode 100644 index 0000000..f92ed37 --- /dev/null +++ b/src/Repository/ParentDirectoryPermissionRepository.php @@ -0,0 +1,45 @@ + + */ +class ParentDirectoryPermissionRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, ParentDirectoryPermission::class); + } + + // /** + // * @return ParentDirectoryPermission[] Returns an array of ParentDirectoryPermission objects + // */ + // public function findByExampleField($value): array + // { + // return $this->createQueryBuilder('p') + // ->andWhere('p.exampleField = :val') + // ->setParameter('val', $value) + // ->orderBy('p.id', 'ASC') + // ->setMaxResults(10) + // ->getQuery() + // ->getResult() + // ; + // } + + // public function findOneBySomeField($value): ?ParentDirectoryPermission + // { + // return $this->createQueryBuilder('p') + // ->andWhere('p.exampleField = :val') + // ->setParameter('val', $value) + // ->getQuery() + // ->getOneOrNullResult() + // ; + // } +} diff --git a/src/Security/Voter/FileVoter.php b/src/Security/Voter/FileVoter.php index 01d3b40..6501b39 100644 --- a/src/Security/Voter/FileVoter.php +++ b/src/Security/Voter/FileVoter.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace App\Security\Voter; use App\Entity\ParentDirectory; +use App\Entity\ParentDirectoryPermission; use App\Entity\User; use App\Enum\RoleEnum; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; @@ -29,9 +30,23 @@ final class FileVoter extends Voter return false; } + $parentDirectoryPermissions = array_filter($realSubject->getParentDirectoryPermissions()->toArray(), static fn (ParentDirectoryPermission $parentDirectoryPermission) => $parentDirectoryPermission->getRole() === $user->getFolderRole()); + + $parentDirectoryPermission = null; + + if ([] !== $parentDirectoryPermissions) { + $parentDirectoryPermission = array_values($parentDirectoryPermissions)[0]; + } + + $checkNeeded = false; + + if (null !== $parentDirectoryPermission) { + $checkNeeded = 'file_read' === $attribute ? $parentDirectoryPermission->isRead() : $parentDirectoryPermission->isWrite(); + } + if ($realSubject->getUserCreated() === $user) { return true; } - return $realSubject->isPublic() && ($realSubject->getOwnerRole() === $user->getFolderRole() || in_array($user->getFolderRole(), $realSubject->getOwnerRole()->getHigherRoles(), true)); + return $realSubject->isPublic() && ($checkNeeded || $realSubject->getOwnerRole() === $user->getFolderRole() || in_array($user->getFolderRole(), $realSubject->getOwnerRole()->getHigherRoles(), true)); } } diff --git a/src/Twig/Extension/EntityExtension.php b/src/Twig/Extension/EntityExtension.php new file mode 100644 index 0000000..60c8b81 --- /dev/null +++ b/src/Twig/Extension/EntityExtension.php @@ -0,0 +1,20 @@ +parentDirectoryRepository->findOneBy(['name' => $value]); + } +} diff --git a/templates/files/index.html.twig b/templates/files/index.html.twig index ff24390..353d6da 100755 --- a/templates/files/index.html.twig +++ b/templates/files/index.html.twig @@ -8,6 +8,7 @@
{{ include('partials/alerts.html.twig') }}
+ {% if parentDir == null or (parentDir != null and is_granted('file_write', parentDir)) %}
Ajouter des fichiers {% endif %}
+ {% endif %}
{% include 'partials/breadbrumb.html.twig' %}
@@ -62,6 +64,7 @@ {% if file.type == 'file' %} + {% if is_granted('file_write', parentDir) %} @@ -70,13 +73,21 @@ filename: file.path }) }}" class="hover:text-red-700 duration-300"> + {% endif %} {% else %} + {% if parentDir == null %} + {% set parentDirectory = get_parent_dir(file.path) %} + {% else %} + {% set parentDirectory = parentDir %} + {% endif %} + {% if is_granted('file_write', parentDirectory) %} + {% endif %} {% endif %} From 9ecc72628ca9bc4e1398735d9f1a22c15fd82c95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Melaine=20G=C3=A9rard?= Date: Sun, 26 Jan 2025 15:18:22 +0100 Subject: [PATCH 02/15] :sparkles: fix perm --- src/Controller/FilesController.php | 65 ++++++++++++++++++---- src/Enum/RoleEnum.php | 18 ++++++ src/Form/FilePermissionType.php | 51 +++++++++++++++++ src/Form/ParentDirectoryPermissionType.php | 42 ++++++++++++++ src/Security/Voter/FileVoter.php | 8 ++- templates/files/file_edit.html.twig | 37 ++++++++++++ templates/files/index.html.twig | 6 ++ 7 files changed, 214 insertions(+), 13 deletions(-) create mode 100644 src/Form/FilePermissionType.php create mode 100644 src/Form/ParentDirectoryPermissionType.php create mode 100644 templates/files/file_edit.html.twig diff --git a/src/Controller/FilesController.php b/src/Controller/FilesController.php index 1d6a90a..66744f0 100755 --- a/src/Controller/FilesController.php +++ b/src/Controller/FilesController.php @@ -8,12 +8,14 @@ use App\Entity\ParentDirectory; use App\Entity\User; use App\Enum\RoleEnum; use App\Form\CreateDirectoryType; +use App\Form\FilePermissionType; use App\Form\RenameType; use App\Form\UploadType; use App\Repository\ParentDirectoryRepository; use Doctrine\ORM\EntityManagerInterface; use League\Flysystem\Filesystem; use League\Flysystem\FilesystemException; +use Symfony\Bridge\Doctrine\Attribute\MapEntity; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\File\UploadedFile; use Symfony\Component\HttpFoundation\HeaderUtils; @@ -45,7 +47,9 @@ class FilesController extends AbstractController $path = $this->normalizePath($path); $this->getUser(); if ('' !== $path) { - $parentDir = $this->parentDirectoryRepository->findOneBy(['name' => $path]); + $pathExploded = explode('/', $path); + + $parentDir = $this->parentDirectoryRepository->findOneBy(['name' => $pathExploded[0]]); if (null === $parentDir || !$defaultAdapter->directoryExists($path)) { throw $this->createNotFoundException("Ce dossier n'existe pas !"); @@ -121,17 +125,8 @@ class FilesController extends AbstractController } // Si l'owner role sur le parent est visiteur, on peut accéder au fichier sans être connecté - if (RoleEnum::VISITEUR !== $parentDir->getOwnerRole()) { - $this->denyAccessUnlessGranted('ROLE_USER'); - - /** - * @var User $user - */ - $user = $this->getUser(); - - if (!$this->isGranted('file_read', $parentDir)) { - throw $this->createNotFoundException("Vous n'avez pas le droit d'accéder à ce fichier !"); - } + if (!$this->isGranted('file_read', $parentDir)) { + throw $this->createNotFoundException("Vous n'avez pas le droit d'accéder à ce fichier !"); } $mimetype = $defaultAdapter->mimeType($file); @@ -474,4 +469,50 @@ class FilesController extends AbstractController return str_replace('//', '/', $path); } + + #[Route('/file-edit-permission/{parentDir}', name: 'file_edit_permission')] + #[IsGranted('ROLE_USER')] + public function fileRead(#[MapEntity(mapping: ['parentDir' => 'name'])] ParentDirectory $parentDir, Request $request): Response + { + /** + * @var User $user + */ + $user = $this->getUser(); + + // 2 possibilités : soit l'utilisateur est le créateur du dossier, soit le dossier est public et l'utilisateur a le role Conseil d'administration + // Si ce n'est pas le cas, on redirige vers la page d'accueil + if ($parentDir->getUserCreated() !== $user) { + if ($parentDir->isPublic() && RoleEnum::CONSEIL_ADMINISTRATION !== $user->getFolderRole()) { + $this->addFlash('error', 'Vous n\'avez pas le droit de modifier les permissions de ce dossier.'); + return $this->redirectToRoute('app_files_index'); + } elseif (!$parentDir->isPublic()) { + $this->addFlash('error', 'Vous n\'avez pas le droit de modifier les permissions de ce dossier.'); + return $this->redirectToRoute('app_files_index'); + } + } + + $form = $this->createForm(FilePermissionType::class, $parentDir); + + $form->handleRequest($request); + + if ($form->isSubmitted() && $form->isValid()) { + $datas = $form->getData(); + + foreach ($datas->getParentDirectoryPermissions() as $parentPerm) { + $this->entityManager->persist($parentPerm); + } + $this->entityManager->persist($datas); + + $this->entityManager->flush(); + + $this->addFlash('success', 'Les permissions ont bien été modifiées.'); + + return $this->redirectToRoute('app_files_index'); + } + + return $this->render('files/file_edit.html.twig', [ + 'parentDir' => $parentDir, + 'form' => $form->createView(), + ]); + } } diff --git a/src/Enum/RoleEnum.php b/src/Enum/RoleEnum.php index f621c4f..5d674e6 100644 --- a/src/Enum/RoleEnum.php +++ b/src/Enum/RoleEnum.php @@ -32,4 +32,22 @@ enum RoleEnum: string return $roles; } + + public function getInferiorRoles(): array + { + $roles = []; + + $isFound = false; + foreach (RoleEnum::cases() as $role) { + if ($role === $this) { + $isFound = true; + } + + if ($isFound) { + $roles[] = $role; + } + } + + return $roles; + } } diff --git a/src/Form/FilePermissionType.php b/src/Form/FilePermissionType.php new file mode 100644 index 0000000..05e57ab --- /dev/null +++ b/src/Form/FilePermissionType.php @@ -0,0 +1,51 @@ +add('ownerRole', EnumType::class, [ + 'class' => RoleEnum::class, + 'label' => 'Rôle minimum', + ]) + ->add('isPublic', null, [ + 'label' => 'Dossier public', + ]) + ->add('parentDirectoryPermissions', CollectionType::class, [ + 'entry_type' => ParentDirectoryPermissionType::class, + 'entry_options' => [ + 'label' => false, + ], + 'allow_add' => true, + 'allow_delete' => true, + 'by_reference' => false, + ]) + ->add('submit', SubmitType::class, [ + 'label' => 'Enregistrer', + ]) + ; + } + + public function configureOptions(OptionsResolver $resolver): void + { + $resolver->setDefaults([ + 'data_class' => ParentDirectory::class, + ]); + } +} diff --git a/src/Form/ParentDirectoryPermissionType.php b/src/Form/ParentDirectoryPermissionType.php new file mode 100644 index 0000000..df63647 --- /dev/null +++ b/src/Form/ParentDirectoryPermissionType.php @@ -0,0 +1,42 @@ +add('role', EnumType::class, [ + 'class' => RoleEnum::class, + 'label' => 'Rôle', + ]) + ->add('read', null, [ + 'label' => 'Lecture', + ]) + ->add('write', null, [ + 'label' => 'Écriture', + ]) + ; + } + + public function configureOptions(OptionsResolver $resolver): void + { + $resolver->setDefaults([ + 'data_class' => ParentDirectoryPermission::class, + ]); + } +} diff --git a/src/Security/Voter/FileVoter.php b/src/Security/Voter/FileVoter.php index 6501b39..f520b36 100644 --- a/src/Security/Voter/FileVoter.php +++ b/src/Security/Voter/FileVoter.php @@ -26,10 +26,16 @@ final class FileVoter extends Voter */ $realSubject = $subject; $user = $token->getUser(); + + $parentDirectoryPermissionsVisiteurRead = array_filter($realSubject->getParentDirectoryPermissions()->toArray(), static fn (ParentDirectoryPermission $parentDirectoryPermission) => RoleEnum::VISITEUR === $parentDirectoryPermission->getRole()); + + if ([] !== $parentDirectoryPermissionsVisiteurRead && !($user instanceof User)) { + return 'file_read' === $attribute && array_values($parentDirectoryPermissionsVisiteurRead)[0]->isRead(); + } + if (!$user instanceof User) { return false; } - $parentDirectoryPermissions = array_filter($realSubject->getParentDirectoryPermissions()->toArray(), static fn (ParentDirectoryPermission $parentDirectoryPermission) => $parentDirectoryPermission->getRole() === $user->getFolderRole()); $parentDirectoryPermission = null; diff --git a/templates/files/file_edit.html.twig b/templates/files/file_edit.html.twig new file mode 100644 index 0000000..d333af0 --- /dev/null +++ b/templates/files/file_edit.html.twig @@ -0,0 +1,37 @@ +{% extends 'base.html.twig' %} + +{% block body %} +
+
+

Gérer les permissions du dossier {{ parentDir.name }}

+ {{ form_start(form) }} + {{ form_row(form.ownerRole) }} + {{ form_row(form.isPublic) }} + {{ form_label(form.parentDirectoryPermissions) }} + {{ form_widget(form.parentDirectoryPermissions) }} + + {{ form_end(form) }} +
+
+{% endblock %} + +{% block title %} + Gérer les permissions du dossier {{ parentDir.name }} +{% endblock %} + +{% block javascripts %} + {{ parent() }} + +{% endblock %} diff --git a/templates/files/index.html.twig b/templates/files/index.html.twig index 353d6da..b40222d 100755 --- a/templates/files/index.html.twig +++ b/templates/files/index.html.twig @@ -80,6 +80,12 @@ {% else %} {% set parentDirectory = parentDir %} {% endif %} + + {% if parentDir == null and (parentDirectory.userCreated == app.user or (parentDirectory.isPublic and app.user.folderRole == enum('App\\Enum\\RoleEnum').CONSEIL_ADMINISTRATION)) %} + + {% endif %} {% if is_granted('file_write', parentDirectory) %} Date: Tue, 28 Jan 2025 10:29:22 +0100 Subject: [PATCH 06/15] =?UTF-8?q?:sparkles:=20Fix=20r=C3=B4le=20du=20dossi?= =?UTF-8?q?er=20vers=20Groupe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Command/CreateUserCommand.php | 2 +- src/Form/UserAdminType.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Command/CreateUserCommand.php b/src/Command/CreateUserCommand.php index c5e6bfd..528bca4 100755 --- a/src/Command/CreateUserCommand.php +++ b/src/Command/CreateUserCommand.php @@ -38,7 +38,7 @@ class CreateUserCommand extends Command $email = $io->ask('Email de l\'utilisateur'); $password = $io->askHidden('Mot de passe de l\'utilisateur'); $isAdmin = $io->confirm('Est-ce un administrateur ?'); - $folderRole = $io->choice('Rôle du dossier', array_map(static fn ($role) => $role->value, RoleEnum::cases()), RoleEnum::VISITEUR->value); + $folderRole = $io->choice('Groupe', array_map(static fn ($role) => $role->value, RoleEnum::cases()), RoleEnum::VISITEUR->value); try { $user = $this->userRepository->findOneBy(['email' => $email]); diff --git a/src/Form/UserAdminType.php b/src/Form/UserAdminType.php index e368351..c16bb74 100755 --- a/src/Form/UserAdminType.php +++ b/src/Form/UserAdminType.php @@ -27,7 +27,7 @@ class UserAdminType extends AbstractType 'label' => 'Adresse email', ]) ->add('folderRole', EnumType::class, [ - 'label' => 'Role du dossier', + 'label' => 'Groupe', 'class' => RoleEnum::class, ]) ->add('role', ChoiceType::class, [ From f6572696f4940b3484e181fac28361812786142f Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 29 Jan 2025 00:02:10 +0000 Subject: [PATCH 07/15] Update dunglas/frankenphp Docker digest to 7a45fd0 --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 99509ce..54ebe73 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM dunglas/frankenphp@sha256:18a14f07c085a83e0c7d6c833f64d8733a78e656c0f2911400f9c6bc99ac3fd0 +FROM dunglas/frankenphp@sha256:7a45fd0a4114256cc49da94503e6c60c88e491f2ef74fee983887bfd0a271af2 ENV SERVER_NAME=":80" From e8554bcecc4a2f9fd3bd3a45b06849467c475c72 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 29 Jan 2025 00:02:46 +0000 Subject: [PATCH 08/15] Update php-dev --- composer.lock | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/composer.lock b/composer.lock index 6bca8ed..bd30b74 100644 --- a/composer.lock +++ b/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": "e7db5287918139680fd9d6d9f5b1287f", + "content-hash": "534e1d8a7b5e9b57ac26730f92ac2581", "packages": [ { "name": "composer/semver", @@ -8917,16 +8917,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.68.1", + "version": "v3.68.3", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "b9db2b2ea3cdba7201067acee46f984ef2397cff" + "reference": "85fd31cced824749a732e697acdd1a3d657312f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/b9db2b2ea3cdba7201067acee46f984ef2397cff", - "reference": "b9db2b2ea3cdba7201067acee46f984ef2397cff", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/85fd31cced824749a732e697acdd1a3d657312f0", + "reference": "85fd31cced824749a732e697acdd1a3d657312f0", "shasum": "" }, "require": { @@ -9008,7 +9008,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.68.1" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.68.3" }, "funding": [ { @@ -9016,7 +9016,7 @@ "type": "github" } ], - "time": "2025-01-17T09:20:36+00:00" + "time": "2025-01-27T16:37:32+00:00" }, { "name": "masterminds/html5", @@ -9871,16 +9871,16 @@ }, { "name": "phpunit/phpunit", - "version": "11.5.3", + "version": "11.5.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "30e319e578a7b5da3543073e30002bf82042f701" + "reference": "e0da3559ec50a91f6a6a201473b607b5ccfd9a1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/30e319e578a7b5da3543073e30002bf82042f701", - "reference": "30e319e578a7b5da3543073e30002bf82042f701", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e0da3559ec50a91f6a6a201473b607b5ccfd9a1b", + "reference": "e0da3559ec50a91f6a6a201473b607b5ccfd9a1b", "shasum": "" }, "require": { @@ -9952,7 +9952,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.3" + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.4" }, "funding": [ { @@ -9968,7 +9968,7 @@ "type": "tidelift" } ], - "time": "2025-01-13T09:36:00+00:00" + "time": "2025-01-28T15:03:46+00:00" }, { "name": "react/cache", From 128918646390aea9000b7915ac451c189f070ca4 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Thu, 30 Jan 2025 00:02:57 +0000 Subject: [PATCH 09/15] Update php-dev --- composer.lock | 98 +++++++++++++++++++++++++-------------------------- 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/composer.lock b/composer.lock index bd30b74..ebfd559 100644 --- a/composer.lock +++ b/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": "534e1d8a7b5e9b57ac26730f92ac2581", + "content-hash": "d3d1dee5924e3937edaf0ce54864e3fd", "packages": [ { "name": "composer/semver", @@ -2814,16 +2814,16 @@ }, { "name": "symfony/config", - "version": "v7.2.0", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "bcd3c4adf0144dee5011bb35454728c38adec055" + "reference": "7716594aaae91d9141be080240172a92ecca4d44" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/bcd3c4adf0144dee5011bb35454728c38adec055", - "reference": "bcd3c4adf0144dee5011bb35454728c38adec055", + "url": "https://api.github.com/repos/symfony/config/zipball/7716594aaae91d9141be080240172a92ecca4d44", + "reference": "7716594aaae91d9141be080240172a92ecca4d44", "shasum": "" }, "require": { @@ -2869,7 +2869,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v7.2.0" + "source": "https://github.com/symfony/config/tree/v7.2.3" }, "funding": [ { @@ -2885,7 +2885,7 @@ "type": "tidelift" } ], - "time": "2024-11-04T11:36:24+00:00" + "time": "2025-01-22T12:07:01+00:00" }, { "name": "symfony/console", @@ -3384,16 +3384,16 @@ }, { "name": "symfony/error-handler", - "version": "v7.2.1", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "6150b89186573046167796fa5f3f76601d5145f8" + "reference": "959a74d044a6db21f4caa6d695648dcb5584cb49" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/6150b89186573046167796fa5f3f76601d5145f8", - "reference": "6150b89186573046167796fa5f3f76601d5145f8", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/959a74d044a6db21f4caa6d695648dcb5584cb49", + "reference": "959a74d044a6db21f4caa6d695648dcb5584cb49", "shasum": "" }, "require": { @@ -3439,7 +3439,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v7.2.1" + "source": "https://github.com/symfony/error-handler/tree/v7.2.3" }, "funding": [ { @@ -3455,7 +3455,7 @@ "type": "tidelift" } ], - "time": "2024-12-07T08:50:44+00:00" + "time": "2025-01-07T09:39:55+00:00" }, { "name": "symfony/event-dispatcher", @@ -4297,16 +4297,16 @@ }, { "name": "symfony/http-foundation", - "version": "v7.2.2", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "62d1a43796ca3fea3f83a8470dfe63a4af3bc588" + "reference": "ee1b504b8926198be89d05e5b6fc4c3810c090f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/62d1a43796ca3fea3f83a8470dfe63a4af3bc588", - "reference": "62d1a43796ca3fea3f83a8470dfe63a4af3bc588", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ee1b504b8926198be89d05e5b6fc4c3810c090f0", + "reference": "ee1b504b8926198be89d05e5b6fc4c3810c090f0", "shasum": "" }, "require": { @@ -4355,7 +4355,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.2.2" + "source": "https://github.com/symfony/http-foundation/tree/v7.2.3" }, "funding": [ { @@ -4371,20 +4371,20 @@ "type": "tidelift" } ], - "time": "2024-12-30T19:00:17+00:00" + "time": "2025-01-17T10:56:55+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.2.2", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "3c432966bd8c7ec7429663105f5a02d7e75b4306" + "reference": "caae9807f8e25a9b43ce8cc6fafab6cf91f0cc9b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/3c432966bd8c7ec7429663105f5a02d7e75b4306", - "reference": "3c432966bd8c7ec7429663105f5a02d7e75b4306", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/caae9807f8e25a9b43ce8cc6fafab6cf91f0cc9b", + "reference": "caae9807f8e25a9b43ce8cc6fafab6cf91f0cc9b", "shasum": "" }, "require": { @@ -4469,7 +4469,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.2.2" + "source": "https://github.com/symfony/http-kernel/tree/v7.2.3" }, "funding": [ { @@ -4485,7 +4485,7 @@ "type": "tidelift" } ], - "time": "2024-12-31T14:59:40+00:00" + "time": "2025-01-29T07:40:13+00:00" }, { "name": "symfony/intl", @@ -5983,16 +5983,16 @@ }, { "name": "symfony/routing", - "version": "v7.2.0", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "e10a2450fa957af6c448b9b93c9010a4e4c0725e" + "reference": "ee9a67edc6baa33e5fae662f94f91fd262930996" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/e10a2450fa957af6c448b9b93c9010a4e4c0725e", - "reference": "e10a2450fa957af6c448b9b93c9010a4e4c0725e", + "url": "https://api.github.com/repos/symfony/routing/zipball/ee9a67edc6baa33e5fae662f94f91fd262930996", + "reference": "ee9a67edc6baa33e5fae662f94f91fd262930996", "shasum": "" }, "require": { @@ -6044,7 +6044,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.2.0" + "source": "https://github.com/symfony/routing/tree/v7.2.3" }, "funding": [ { @@ -6060,7 +6060,7 @@ "type": "tidelift" } ], - "time": "2024-11-25T11:08:51+00:00" + "time": "2025-01-17T10:56:55+00:00" }, { "name": "symfony/runtime", @@ -7855,16 +7855,16 @@ }, { "name": "symfony/var-dumper", - "version": "v7.2.0", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "c6a22929407dec8765d6e2b6ff85b800b245879c" + "reference": "82b478c69745d8878eb60f9a049a4d584996f73a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c6a22929407dec8765d6e2b6ff85b800b245879c", - "reference": "c6a22929407dec8765d6e2b6ff85b800b245879c", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/82b478c69745d8878eb60f9a049a4d584996f73a", + "reference": "82b478c69745d8878eb60f9a049a4d584996f73a", "shasum": "" }, "require": { @@ -7918,7 +7918,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.2.0" + "source": "https://github.com/symfony/var-dumper/tree/v7.2.3" }, "funding": [ { @@ -7934,7 +7934,7 @@ "type": "tidelift" } ], - "time": "2024-11-08T15:48:14+00:00" + "time": "2025-01-17T11:39:41+00:00" }, { "name": "symfony/var-exporter", @@ -9871,16 +9871,16 @@ }, { "name": "phpunit/phpunit", - "version": "11.5.4", + "version": "11.5.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "e0da3559ec50a91f6a6a201473b607b5ccfd9a1b" + "reference": "b9a975972f580c0491f834eb0818ad2b32fd8bba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e0da3559ec50a91f6a6a201473b607b5ccfd9a1b", - "reference": "e0da3559ec50a91f6a6a201473b607b5ccfd9a1b", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b9a975972f580c0491f834eb0818ad2b32fd8bba", + "reference": "b9a975972f580c0491f834eb0818ad2b32fd8bba", "shasum": "" }, "require": { @@ -9952,7 +9952,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.4" + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.5" }, "funding": [ { @@ -9968,7 +9968,7 @@ "type": "tidelift" } ], - "time": "2025-01-28T15:03:46+00:00" + "time": "2025-01-29T14:01:11+00:00" }, { "name": "react/cache", @@ -11983,16 +11983,16 @@ }, { "name": "symfony/web-profiler-bundle", - "version": "v7.2.2", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "5d37d9bd86ab49bd94c57e18e601e27fb6760f2c" + "reference": "cd60cb3664954a1593872f6f199bffac99e8c11e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/5d37d9bd86ab49bd94c57e18e601e27fb6760f2c", - "reference": "5d37d9bd86ab49bd94c57e18e601e27fb6760f2c", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/cd60cb3664954a1593872f6f199bffac99e8c11e", + "reference": "cd60cb3664954a1593872f6f199bffac99e8c11e", "shasum": "" }, "require": { @@ -12045,7 +12045,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.2.2" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.2.3" }, "funding": [ { @@ -12061,7 +12061,7 @@ "type": "tidelift" } ], - "time": "2024-12-11T15:34:14+00:00" + "time": "2025-01-07T09:39:55+00:00" }, { "name": "theseer/tokenizer", From c3df560fc794a3688d30a14237c95ac89c11ee37 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 31 Jan 2025 00:04:48 +0000 Subject: [PATCH 10/15] Update dependency friendsofphp/php-cs-fixer to v3.68.5 --- composer.lock | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/composer.lock b/composer.lock index ebfd559..3851b4c 100644 --- a/composer.lock +++ b/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": "d3d1dee5924e3937edaf0ce54864e3fd", + "content-hash": "9ad1c44d66fe21c4ec5bdbae5e345bf7", "packages": [ { "name": "composer/semver", @@ -8917,16 +8917,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.68.3", + "version": "v3.68.5", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "85fd31cced824749a732e697acdd1a3d657312f0" + "reference": "7bedb718b633355272428c60736dc97fb96daf27" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/85fd31cced824749a732e697acdd1a3d657312f0", - "reference": "85fd31cced824749a732e697acdd1a3d657312f0", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/7bedb718b633355272428c60736dc97fb96daf27", + "reference": "7bedb718b633355272428c60736dc97fb96daf27", "shasum": "" }, "require": { @@ -9008,7 +9008,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.68.3" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.68.5" }, "funding": [ { @@ -9016,7 +9016,7 @@ "type": "github" } ], - "time": "2025-01-27T16:37:32+00:00" + "time": "2025-01-30T17:00:50+00:00" }, { "name": "masterminds/html5", From c268f8873dfd7739db342cf2ecf7eab4d1963fb2 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 31 Jan 2025 08:32:46 +0000 Subject: [PATCH 11/15] Update php-mineur --- composer.lock | 262 +++++++++++++++++++++++++------------------------- 1 file changed, 132 insertions(+), 130 deletions(-) diff --git a/composer.lock b/composer.lock index 3851b4c..e4b4aa0 100644 --- a/composer.lock +++ b/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": "9ad1c44d66fe21c4ec5bdbae5e345bf7", + "content-hash": "2496ee46fdf43e7872579f8088f8ec7f", "packages": [ { "name": "composer/semver", @@ -2487,16 +2487,16 @@ }, { "name": "symfony/asset-mapper", - "version": "v7.2.0", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/asset-mapper.git", - "reference": "ffb733232bb6bb85ef6a994f47c817e7c2ecab9c" + "reference": "d9a514cbaba040691d5b10afc20755590d2ac80a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset-mapper/zipball/ffb733232bb6bb85ef6a994f47c817e7c2ecab9c", - "reference": "ffb733232bb6bb85ef6a994f47c817e7c2ecab9c", + "url": "https://api.github.com/repos/symfony/asset-mapper/zipball/d9a514cbaba040691d5b10afc20755590d2ac80a", + "reference": "d9a514cbaba040691d5b10afc20755590d2ac80a", "shasum": "" }, "require": { @@ -2546,7 +2546,7 @@ "description": "Maps directories of assets & makes them available in a public directory with versioned filenames.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset-mapper/tree/v7.2.0" + "source": "https://github.com/symfony/asset-mapper/tree/v7.2.3" }, "funding": [ { @@ -2562,20 +2562,20 @@ "type": "tidelift" } ], - "time": "2024-11-20T11:17:29+00:00" + "time": "2025-01-27T11:08:17+00:00" }, { "name": "symfony/cache", - "version": "v7.2.1", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "e7e983596b744c4539f31e79b0350a6cf5878a20" + "reference": "8d773a575e446de220dca03d600b2d8e1c1c10ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/e7e983596b744c4539f31e79b0350a6cf5878a20", - "reference": "e7e983596b744c4539f31e79b0350a6cf5878a20", + "url": "https://api.github.com/repos/symfony/cache/zipball/8d773a575e446de220dca03d600b2d8e1c1c10ec", + "reference": "8d773a575e446de220dca03d600b2d8e1c1c10ec", "shasum": "" }, "require": { @@ -2644,7 +2644,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v7.2.1" + "source": "https://github.com/symfony/cache/tree/v7.2.3" }, "funding": [ { @@ -2660,7 +2660,7 @@ "type": "tidelift" } ], - "time": "2024-12-07T08:08:50+00:00" + "time": "2025-01-27T11:08:17+00:00" }, { "name": "symfony/cache-contracts", @@ -2982,16 +2982,16 @@ }, { "name": "symfony/dependency-injection", - "version": "v7.2.0", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "a475747af1a1c98272a5471abc35f3da81197c5d" + "reference": "1d321c4bc3fe926fd4c38999a4c9af4f5d61ddfc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/a475747af1a1c98272a5471abc35f3da81197c5d", - "reference": "a475747af1a1c98272a5471abc35f3da81197c5d", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/1d321c4bc3fe926fd4c38999a4c9af4f5d61ddfc", + "reference": "1d321c4bc3fe926fd4c38999a4c9af4f5d61ddfc", "shasum": "" }, "require": { @@ -3042,7 +3042,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v7.2.0" + "source": "https://github.com/symfony/dependency-injection/tree/v7.2.3" }, "funding": [ { @@ -3058,7 +3058,7 @@ "type": "tidelift" } ], - "time": "2024-11-25T15:45:00+00:00" + "time": "2025-01-17T10:56:55+00:00" }, { "name": "symfony/deprecation-contracts", @@ -3238,16 +3238,16 @@ }, { "name": "symfony/doctrine-messenger", - "version": "v7.2.2", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-messenger.git", - "reference": "1abbc58849847e6b43c042b17046371ef397be19" + "reference": "55cd0f79415b3ae18587df903926c8e5d2b51f25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/1abbc58849847e6b43c042b17046371ef397be19", - "reference": "1abbc58849847e6b43c042b17046371ef397be19", + "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/55cd0f79415b3ae18587df903926c8e5d2b51f25", + "reference": "55cd0f79415b3ae18587df903926c8e5d2b51f25", "shasum": "" }, "require": { @@ -3290,7 +3290,7 @@ "description": "Symfony Doctrine Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-messenger/tree/v7.2.2" + "source": "https://github.com/symfony/doctrine-messenger/tree/v7.2.3" }, "funding": [ { @@ -3306,7 +3306,7 @@ "type": "tidelift" } ], - "time": "2024-12-30T19:00:17+00:00" + "time": "2025-01-07T09:39:55+00:00" }, { "name": "symfony/dotenv", @@ -3877,16 +3877,16 @@ }, { "name": "symfony/form", - "version": "v7.2.0", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "264cff30f52f12149aff92bbc23e78160a45c2f3" + "reference": "092a89345db25f8e4fc1804a4d3f184766e36e69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/264cff30f52f12149aff92bbc23e78160a45c2f3", - "reference": "264cff30f52f12149aff92bbc23e78160a45c2f3", + "url": "https://api.github.com/repos/symfony/form/zipball/092a89345db25f8e4fc1804a4d3f184766e36e69", + "reference": "092a89345db25f8e4fc1804a4d3f184766e36e69", "shasum": "" }, "require": { @@ -3954,7 +3954,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v7.2.0" + "source": "https://github.com/symfony/form/tree/v7.2.3" }, "funding": [ { @@ -3970,20 +3970,20 @@ "type": "tidelift" } ], - "time": "2024-11-27T11:55:00+00:00" + "time": "2024-12-24T12:02:08+00:00" }, { "name": "symfony/framework-bundle", - "version": "v7.2.2", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "aaf86f38b483ce101c7e60be050bc0140431cfe2" + "reference": "d37a43dd0b2079605fcab3056dac71934f06dc0f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/aaf86f38b483ce101c7e60be050bc0140431cfe2", - "reference": "aaf86f38b483ce101c7e60be050bc0140431cfe2", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/d37a43dd0b2079605fcab3056dac71934f06dc0f", + "reference": "d37a43dd0b2079605fcab3056dac71934f06dc0f", "shasum": "" }, "require": { @@ -4104,7 +4104,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v7.2.2" + "source": "https://github.com/symfony/framework-bundle/tree/v7.2.3" }, "funding": [ { @@ -4120,20 +4120,20 @@ "type": "tidelift" } ], - "time": "2024-12-19T14:25:03+00:00" + "time": "2025-01-29T07:13:55+00:00" }, { "name": "symfony/http-client", - "version": "v7.2.2", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "339ba21476eb184290361542f732ad12c97591ec" + "reference": "7ce6078c79a4a7afff931c413d2959d3bffbfb8d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/339ba21476eb184290361542f732ad12c97591ec", - "reference": "339ba21476eb184290361542f732ad12c97591ec", + "url": "https://api.github.com/repos/symfony/http-client/zipball/7ce6078c79a4a7afff931c413d2959d3bffbfb8d", + "reference": "7ce6078c79a4a7afff931c413d2959d3bffbfb8d", "shasum": "" }, "require": { @@ -4199,7 +4199,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v7.2.2" + "source": "https://github.com/symfony/http-client/tree/v7.2.3" }, "funding": [ { @@ -4215,7 +4215,7 @@ "type": "tidelift" } ], - "time": "2024-12-30T18:35:15+00:00" + "time": "2025-01-28T15:51:35+00:00" }, { "name": "symfony/http-client-contracts", @@ -4575,16 +4575,16 @@ }, { "name": "symfony/mailer", - "version": "v7.2.0", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "e4d358702fb66e4c8a2af08e90e7271a62de39cc" + "reference": "f3871b182c44997cf039f3b462af4a48fb85f9d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/e4d358702fb66e4c8a2af08e90e7271a62de39cc", - "reference": "e4d358702fb66e4c8a2af08e90e7271a62de39cc", + "url": "https://api.github.com/repos/symfony/mailer/zipball/f3871b182c44997cf039f3b462af4a48fb85f9d3", + "reference": "f3871b182c44997cf039f3b462af4a48fb85f9d3", "shasum": "" }, "require": { @@ -4635,7 +4635,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.2.0" + "source": "https://github.com/symfony/mailer/tree/v7.2.3" }, "funding": [ { @@ -4651,20 +4651,20 @@ "type": "tidelift" } ], - "time": "2024-11-25T15:21:05+00:00" + "time": "2025-01-27T11:08:17+00:00" }, { "name": "symfony/messenger", - "version": "v7.2.1", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/messenger.git", - "reference": "cc0e820c02a0a887a88ddb52b7c4de4634677ce6" + "reference": "8e5b72deb81e57c8868eb9fe7b1dcb4af694ef10" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/messenger/zipball/cc0e820c02a0a887a88ddb52b7c4de4634677ce6", - "reference": "cc0e820c02a0a887a88ddb52b7c4de4634677ce6", + "url": "https://api.github.com/repos/symfony/messenger/zipball/8e5b72deb81e57c8868eb9fe7b1dcb4af694ef10", + "reference": "8e5b72deb81e57c8868eb9fe7b1dcb4af694ef10", "shasum": "" }, "require": { @@ -4722,7 +4722,7 @@ "description": "Helps applications send and receive messages to/from other applications or via message queues", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/messenger/tree/v7.2.1" + "source": "https://github.com/symfony/messenger/tree/v7.2.3" }, "funding": [ { @@ -4738,20 +4738,20 @@ "type": "tidelift" } ], - "time": "2024-12-07T08:08:50+00:00" + "time": "2025-01-17T10:17:27+00:00" }, { "name": "symfony/mime", - "version": "v7.2.1", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "7f9617fcf15cb61be30f8b252695ed5e2bfac283" + "reference": "2fc3b4bd67e4747e45195bc4c98bea4628476204" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/7f9617fcf15cb61be30f8b252695ed5e2bfac283", - "reference": "7f9617fcf15cb61be30f8b252695ed5e2bfac283", + "url": "https://api.github.com/repos/symfony/mime/zipball/2fc3b4bd67e4747e45195bc4c98bea4628476204", + "reference": "2fc3b4bd67e4747e45195bc4c98bea4628476204", "shasum": "" }, "require": { @@ -4806,7 +4806,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.2.1" + "source": "https://github.com/symfony/mime/tree/v7.2.3" }, "funding": [ { @@ -4822,7 +4822,7 @@ "type": "tidelift" } ], - "time": "2024-12-07T08:50:44+00:00" + "time": "2025-01-27T11:08:17+00:00" }, { "name": "symfony/monolog-bridge", @@ -5824,16 +5824,16 @@ }, { "name": "symfony/property-access", - "version": "v7.2.0", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "3ae42efba01e45aaedecf5c93c8d6a3ab3a82276" + "reference": "b28732e315d81fbec787f838034de7d6c9b2b902" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/3ae42efba01e45aaedecf5c93c8d6a3ab3a82276", - "reference": "3ae42efba01e45aaedecf5c93c8d6a3ab3a82276", + "url": "https://api.github.com/repos/symfony/property-access/zipball/b28732e315d81fbec787f838034de7d6c9b2b902", + "reference": "b28732e315d81fbec787f838034de7d6c9b2b902", "shasum": "" }, "require": { @@ -5880,7 +5880,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v7.2.0" + "source": "https://github.com/symfony/property-access/tree/v7.2.3" }, "funding": [ { @@ -5896,20 +5896,20 @@ "type": "tidelift" } ], - "time": "2024-09-26T12:28:35+00:00" + "time": "2025-01-17T10:56:55+00:00" }, { "name": "symfony/property-info", - "version": "v7.2.2", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "1dfeb0dac7a99f7b3be42db9ccc299c5a6483fcf" + "reference": "dedb118fd588a92f226b390250b384d25f4192fe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/1dfeb0dac7a99f7b3be42db9ccc299c5a6483fcf", - "reference": "1dfeb0dac7a99f7b3be42db9ccc299c5a6483fcf", + "url": "https://api.github.com/repos/symfony/property-info/zipball/dedb118fd588a92f226b390250b384d25f4192fe", + "reference": "dedb118fd588a92f226b390250b384d25f4192fe", "shasum": "" }, "require": { @@ -5920,7 +5920,9 @@ "conflict": { "phpdocumentor/reflection-docblock": "<5.2", "phpdocumentor/type-resolver": "<1.5.1", - "symfony/dependency-injection": "<6.4" + "symfony/cache": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/serializer": "<6.4" }, "require-dev": { "phpdocumentor/reflection-docblock": "^5.2", @@ -5963,7 +5965,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v7.2.2" + "source": "https://github.com/symfony/property-info/tree/v7.2.3" }, "funding": [ { @@ -5979,7 +5981,7 @@ "type": "tidelift" } ], - "time": "2024-12-31T11:04:50+00:00" + "time": "2025-01-27T11:08:17+00:00" }, { "name": "symfony/routing", @@ -6064,16 +6066,16 @@ }, { "name": "symfony/runtime", - "version": "v7.2.0", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/runtime.git", - "reference": "2c350568f3eaccb25fbbbf962bd67cde273121a7" + "reference": "8e8d09bd69b7f6c0260dd3d58f37bd4fbdeab5ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/runtime/zipball/2c350568f3eaccb25fbbbf962bd67cde273121a7", - "reference": "2c350568f3eaccb25fbbbf962bd67cde273121a7", + "url": "https://api.github.com/repos/symfony/runtime/zipball/8e8d09bd69b7f6c0260dd3d58f37bd4fbdeab5ad", + "reference": "8e8d09bd69b7f6c0260dd3d58f37bd4fbdeab5ad", "shasum": "" }, "require": { @@ -6123,7 +6125,7 @@ "runtime" ], "support": { - "source": "https://github.com/symfony/runtime/tree/v7.2.0" + "source": "https://github.com/symfony/runtime/tree/v7.2.3" }, "funding": [ { @@ -6139,20 +6141,20 @@ "type": "tidelift" } ], - "time": "2024-11-06T11:43:25+00:00" + "time": "2024-12-29T21:39:47+00:00" }, { "name": "symfony/security-bundle", - "version": "v7.2.2", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "e7b04b503a4eb49307b9997ac9370f403c2f5198" + "reference": "721de227035c6e4c322fb7dd4839586d58bc0cf5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/e7b04b503a4eb49307b9997ac9370f403c2f5198", - "reference": "e7b04b503a4eb49307b9997ac9370f403c2f5198", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/721de227035c6e4c322fb7dd4839586d58bc0cf5", + "reference": "721de227035c6e4c322fb7dd4839586d58bc0cf5", "shasum": "" }, "require": { @@ -6229,7 +6231,7 @@ "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-bundle/tree/v7.2.2" + "source": "https://github.com/symfony/security-bundle/tree/v7.2.3" }, "funding": [ { @@ -6245,20 +6247,20 @@ "type": "tidelift" } ], - "time": "2024-12-30T18:55:54+00:00" + "time": "2025-01-07T09:39:55+00:00" }, { "name": "symfony/security-core", - "version": "v7.2.0", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "fdbf318b939a86f89b0c071f60b9d551261d3cc1" + "reference": "466784ffcd0b5a16e05394335897f790b17d07e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/fdbf318b939a86f89b0c071f60b9d551261d3cc1", - "reference": "fdbf318b939a86f89b0c071f60b9d551261d3cc1", + "url": "https://api.github.com/repos/symfony/security-core/zipball/466784ffcd0b5a16e05394335897f790b17d07e4", + "reference": "466784ffcd0b5a16e05394335897f790b17d07e4", "shasum": "" }, "require": { @@ -6316,7 +6318,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v7.2.0" + "source": "https://github.com/symfony/security-core/tree/v7.2.3" }, "funding": [ { @@ -6332,20 +6334,20 @@ "type": "tidelift" } ], - "time": "2024-11-27T09:50:52+00:00" + "time": "2025-01-27T11:08:17+00:00" }, { "name": "symfony/security-csrf", - "version": "v7.2.2", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", - "reference": "a2031e57dc02002163770a5cc02fafdd70decf1d" + "reference": "2b4b0c46c901729e4e90719eacd980381f53e0a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/a2031e57dc02002163770a5cc02fafdd70decf1d", - "reference": "a2031e57dc02002163770a5cc02fafdd70decf1d", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/2b4b0c46c901729e4e90719eacd980381f53e0a3", + "reference": "2b4b0c46c901729e4e90719eacd980381f53e0a3", "shasum": "" }, "require": { @@ -6386,7 +6388,7 @@ "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/v7.2.2" + "source": "https://github.com/symfony/security-csrf/tree/v7.2.3" }, "funding": [ { @@ -6402,20 +6404,20 @@ "type": "tidelift" } ], - "time": "2024-12-20T09:56:48+00:00" + "time": "2025-01-02T18:42:10+00:00" }, { "name": "symfony/security-http", - "version": "v7.2.1", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "125844598d9cef4fe72a9f6c4a78ac7c59c3f532" + "reference": "d185c4126ef2ca8b89b6e81d67bf14a52532657f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/125844598d9cef4fe72a9f6c4a78ac7c59c3f532", - "reference": "125844598d9cef4fe72a9f6c4a78ac7c59c3f532", + "url": "https://api.github.com/repos/symfony/security-http/zipball/d185c4126ef2ca8b89b6e81d67bf14a52532657f", + "reference": "d185c4126ef2ca8b89b6e81d67bf14a52532657f", "shasum": "" }, "require": { @@ -6474,7 +6476,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v7.2.1" + "source": "https://github.com/symfony/security-http/tree/v7.2.3" }, "funding": [ { @@ -6490,20 +6492,20 @@ "type": "tidelift" } ], - "time": "2024-12-07T08:50:44+00:00" + "time": "2025-01-28T15:51:35+00:00" }, { "name": "symfony/serializer", - "version": "v7.2.0", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "3f5ed9f5e6c02e3853109190ba38408f5e1d2dd0" + "reference": "320f30beb419ce4f96363ada5e225c41f1ef08ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/3f5ed9f5e6c02e3853109190ba38408f5e1d2dd0", - "reference": "3f5ed9f5e6c02e3853109190ba38408f5e1d2dd0", + "url": "https://api.github.com/repos/symfony/serializer/zipball/320f30beb419ce4f96363ada5e225c41f1ef08ab", + "reference": "320f30beb419ce4f96363ada5e225c41f1ef08ab", "shasum": "" }, "require": { @@ -6572,7 +6574,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v7.2.0" + "source": "https://github.com/symfony/serializer/tree/v7.2.3" }, "funding": [ { @@ -6588,7 +6590,7 @@ "type": "tidelift" } ], - "time": "2024-11-25T15:21:05+00:00" + "time": "2025-01-29T07:13:55+00:00" }, { "name": "symfony/service-contracts", @@ -7758,16 +7760,16 @@ }, { "name": "symfony/validator", - "version": "v7.2.2", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "5c01f00fed258a987ef35f0fefcc069f84111cb4" + "reference": "6faf9f671d522b76ce87e46a1d2d7740b4385c6f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/5c01f00fed258a987ef35f0fefcc069f84111cb4", - "reference": "5c01f00fed258a987ef35f0fefcc069f84111cb4", + "url": "https://api.github.com/repos/symfony/validator/zipball/6faf9f671d522b76ce87e46a1d2d7740b4385c6f", + "reference": "6faf9f671d522b76ce87e46a1d2d7740b4385c6f", "shasum": "" }, "require": { @@ -7835,7 +7837,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v7.2.2" + "source": "https://github.com/symfony/validator/tree/v7.2.3" }, "funding": [ { @@ -7851,7 +7853,7 @@ "type": "tidelift" } ], - "time": "2024-12-30T18:35:15+00:00" + "time": "2025-01-28T15:51:35+00:00" }, { "name": "symfony/var-dumper", @@ -8097,16 +8099,16 @@ }, { "name": "symfony/yaml", - "version": "v7.2.0", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "099581e99f557e9f16b43c5916c26380b54abb22" + "reference": "ac238f173df0c9c1120f862d0f599e17535a87ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/099581e99f557e9f16b43c5916c26380b54abb22", - "reference": "099581e99f557e9f16b43c5916c26380b54abb22", + "url": "https://api.github.com/repos/symfony/yaml/zipball/ac238f173df0c9c1120f862d0f599e17535a87ec", + "reference": "ac238f173df0c9c1120f862d0f599e17535a87ec", "shasum": "" }, "require": { @@ -8149,7 +8151,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.2.0" + "source": "https://github.com/symfony/yaml/tree/v7.2.3" }, "funding": [ { @@ -8165,7 +8167,7 @@ "type": "tidelift" } ], - "time": "2024-10-23T06:56:12+00:00" + "time": "2025-01-07T12:55:42+00:00" }, { "name": "symfonycasts/reset-password-bundle", @@ -8386,7 +8388,7 @@ }, { "name": "twig/extra-bundle", - "version": "v3.18.0", + "version": "v3.19.0", "source": { "type": "git", "url": "https://github.com/twigphp/twig-extra-bundle.git", @@ -8444,7 +8446,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.18.0" + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.19.0" }, "funding": [ { @@ -8460,16 +8462,16 @@ }, { "name": "twig/twig", - "version": "v3.18.0", + "version": "v3.19.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "acffa88cc2b40dbe42eaf3a5025d6c0d4600cc50" + "reference": "d4f8c2b86374f08efc859323dbcd95c590f7124e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/acffa88cc2b40dbe42eaf3a5025d6c0d4600cc50", - "reference": "acffa88cc2b40dbe42eaf3a5025d6c0d4600cc50", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/d4f8c2b86374f08efc859323dbcd95c590f7124e", + "reference": "d4f8c2b86374f08efc859323dbcd95c590f7124e", "shasum": "" }, "require": { @@ -8524,7 +8526,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.18.0" + "source": "https://github.com/twigphp/Twig/tree/v3.19.0" }, "funding": [ { @@ -8536,7 +8538,7 @@ "type": "tidelift" } ], - "time": "2024-12-29T10:51:50+00:00" + "time": "2025-01-29T07:06:14+00:00" }, { "name": "webmozart/assert", From 62fe712f0b198719c8adecbfa94750c07ce52724 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 31 Jan 2025 08:31:57 +0000 Subject: [PATCH 12/15] Update oskarstark/php-cs-fixer-ga Docker digest to 9f862de --- .gitea/workflows/php-cs-fixer.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/php-cs-fixer.yml b/.gitea/workflows/php-cs-fixer.yml index 046afcc..87bef51 100644 --- a/.gitea/workflows/php-cs-fixer.yml +++ b/.gitea/workflows/php-cs-fixer.yml @@ -11,7 +11,7 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - name: Run PHP CS Fixer - uses: docker://oskarstark/php-cs-fixer-ga@sha256:6fbe82f34cafde58e7dc2a48ccf5854135edd456f5ee2c53a6199a706727cd1f + uses: docker://oskarstark/php-cs-fixer-ga@sha256:9f862de18c5fc1c0a7c7d840caab59eefea48069fbb6301f46fceef3b2aa72d6 with: args: --diff --dry-run From f071fb8b9aa87bcbeb001887f203f42751b395f7 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Sat, 1 Feb 2025 00:03:04 +0000 Subject: [PATCH 13/15] Update dependency phpunit/phpunit to v11.5.6 --- composer.lock | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/composer.lock b/composer.lock index e4b4aa0..587df3f 100644 --- a/composer.lock +++ b/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": "2496ee46fdf43e7872579f8088f8ec7f", + "content-hash": "424edafbbb26929b796f1d6140c5f954", "packages": [ { "name": "composer/semver", @@ -9873,16 +9873,16 @@ }, { "name": "phpunit/phpunit", - "version": "11.5.5", + "version": "11.5.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "b9a975972f580c0491f834eb0818ad2b32fd8bba" + "reference": "3c3ae14c90f244cdda95028c3e469028e8d1c02c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b9a975972f580c0491f834eb0818ad2b32fd8bba", - "reference": "b9a975972f580c0491f834eb0818ad2b32fd8bba", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3c3ae14c90f244cdda95028c3e469028e8d1c02c", + "reference": "3c3ae14c90f244cdda95028c3e469028e8d1c02c", "shasum": "" }, "require": { @@ -9954,7 +9954,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.5" + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.6" }, "funding": [ { @@ -9970,7 +9970,7 @@ "type": "tidelift" } ], - "time": "2025-01-29T14:01:11+00:00" + "time": "2025-01-31T07:03:30+00:00" }, { "name": "react/cache", From 896c6e12e01aabed8d5d223eeb54c455694dbb13 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Wed, 5 Feb 2025 00:02:52 +0000 Subject: [PATCH 14/15] Update oskarstark/php-cs-fixer-ga Docker digest to 223e25a --- .gitea/workflows/php-cs-fixer.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/php-cs-fixer.yml b/.gitea/workflows/php-cs-fixer.yml index 87bef51..96cb191 100644 --- a/.gitea/workflows/php-cs-fixer.yml +++ b/.gitea/workflows/php-cs-fixer.yml @@ -11,7 +11,7 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - name: Run PHP CS Fixer - uses: docker://oskarstark/php-cs-fixer-ga@sha256:9f862de18c5fc1c0a7c7d840caab59eefea48069fbb6301f46fceef3b2aa72d6 + uses: docker://oskarstark/php-cs-fixer-ga@sha256:223e25a1681d3e5309f207022e17a980fe45a30b1eff3f32930cb9167e3caef9 with: args: --diff --dry-run From e5f7d5a721e7fee49eda28b98bf4f4a0d6e7f414 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Melaine=20G=C3=A9rard?= Date: Wed, 5 Feb 2025 22:28:05 +0100 Subject: [PATCH 15/15] :sparkles: Fix Dependencies --- composer.json | 12 +++++------ composer.lock | 55 +++++++++++++++++++++++++-------------------------- 2 files changed, 33 insertions(+), 34 deletions(-) diff --git a/composer.json b/composer.json index 7a47ce4..596038a 100755 --- a/composer.json +++ b/composer.json @@ -9,8 +9,8 @@ "ext-iconv": "*", "doctrine/dbal": "^4.2.2", "doctrine/doctrine-bundle": "^2.13.2", - "doctrine/doctrine-migrations-bundle": "^3.4.0", - "doctrine/orm": "^3.3.1", + "doctrine/doctrine-migrations-bundle": "^3.4.1", + "doctrine/orm": "^3.3.2", "league/flysystem": "^3.29.1", "oneup/flysystem-bundle": "^4.12.4", "phpdocumentor/reflection-docblock": "^5.6.1", @@ -53,8 +53,8 @@ "symfonycasts/reset-password-bundle": "^1.23.1", "symfonycasts/tailwind-bundle": "^0.7.1", "tales-from-a-dev/flowbite-bundle": "^0.7.1", - "twig/extra-bundle": "^2.12|^3.18", - "twig/twig": "^2.12|^3.18" + "twig/extra-bundle": "^2.12|^3.19", + "twig/twig": "^2.12|^3.19" }, "config": { "allow-plugins": { @@ -109,11 +109,11 @@ } }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.68.1", + "friendsofphp/php-cs-fixer": "^3.68.5", "phpstan/extension-installer": "^1.4.3", "phpstan/phpstan-strict-rules": "^2.0.3", "phpstan/phpstan-symfony": "^2.0.2", - "phpunit/phpunit": "^11.5.3", + "phpunit/phpunit": "^11.5.6", "rector/rector": "^2.0.7", "symfony/browser-kit": "7.2.*", "symfony/css-selector": "7.2.*", diff --git a/composer.lock b/composer.lock index 587df3f..ce3a6e0 100644 --- a/composer.lock +++ b/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": "424edafbbb26929b796f1d6140c5f954", + "content-hash": "0fab04c3062e2fbc119b9e36fb2c3484", "packages": [ { "name": "composer/semver", @@ -1057,16 +1057,16 @@ }, { "name": "doctrine/orm", - "version": "3.3.1", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "b1f8253105aa5382c495e5f9f8ef34e297775428" + "reference": "c9557c588b3a70ed93caff069d0aa75737f25609" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/b1f8253105aa5382c495e5f9f8ef34e297775428", - "reference": "b1f8253105aa5382c495e5f9f8ef34e297775428", + "url": "https://api.github.com/repos/doctrine/orm/zipball/c9557c588b3a70ed93caff069d0aa75737f25609", + "reference": "c9557c588b3a70ed93caff069d0aa75737f25609", "shasum": "" }, "require": { @@ -1141,9 +1141,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/3.3.1" + "source": "https://github.com/doctrine/orm/tree/3.3.2" }, - "time": "2024-12-19T07:08:14+00:00" + "time": "2025-02-04T19:43:15+00:00" }, { "name": "doctrine/persistence", @@ -1243,16 +1243,16 @@ }, { "name": "doctrine/sql-formatter", - "version": "1.5.1", + "version": "1.5.2", "source": { "type": "git", "url": "https://github.com/doctrine/sql-formatter.git", - "reference": "b784cbde727cf806721451dde40eff4fec3bbe86" + "reference": "d6d00aba6fd2957fe5216fe2b7673e9985db20c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/b784cbde727cf806721451dde40eff4fec3bbe86", - "reference": "b784cbde727cf806721451dde40eff4fec3bbe86", + "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/d6d00aba6fd2957fe5216fe2b7673e9985db20c8", + "reference": "d6d00aba6fd2957fe5216fe2b7673e9985db20c8", "shasum": "" }, "require": { @@ -1262,8 +1262,7 @@ "doctrine/coding-standard": "^12", "ergebnis/phpunit-slow-test-detector": "^2.14", "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^10.5", - "vimeo/psalm": "^5.24" + "phpunit/phpunit": "^10.5" }, "bin": [ "bin/sql-formatter" @@ -1293,9 +1292,9 @@ ], "support": { "issues": "https://github.com/doctrine/sql-formatter/issues", - "source": "https://github.com/doctrine/sql-formatter/tree/1.5.1" + "source": "https://github.com/doctrine/sql-formatter/tree/1.5.2" }, - "time": "2024-10-21T18:21:57+00:00" + "time": "2025-01-24T11:45:48+00:00" }, { "name": "egulias/email-validator", @@ -3129,21 +3128,21 @@ }, { "name": "symfony/doctrine-bridge", - "version": "v7.2.2", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "f12195479a55b77bc8427b48443b966622f4a18b" + "reference": "7a183fdfb472c5487480baa128a41ed47367723e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/f12195479a55b77bc8427b48443b966622f4a18b", - "reference": "f12195479a55b77bc8427b48443b966622f4a18b", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/7a183fdfb472c5487480baa128a41ed47367723e", + "reference": "7a183fdfb472c5487480baa128a41ed47367723e", "shasum": "" }, "require": { "doctrine/event-manager": "^2", - "doctrine/persistence": "^3.1", + "doctrine/persistence": "^3.1|^4", "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "~1.8", @@ -3218,7 +3217,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v7.2.2" + "source": "https://github.com/symfony/doctrine-bridge/tree/v7.2.3" }, "funding": [ { @@ -3234,7 +3233,7 @@ "type": "tidelift" } ], - "time": "2024-12-19T14:25:03+00:00" + "time": "2025-01-27T11:08:17+00:00" }, { "name": "symfony/doctrine-messenger", @@ -11744,16 +11743,16 @@ }, { "name": "symfony/dom-crawler", - "version": "v7.2.0", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "b176e1f1f550ef44c94eb971bf92488de08f7c6b" + "reference": "700a880e5089280c7cf3ca1ccf9d9de6630f5d25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/b176e1f1f550ef44c94eb971bf92488de08f7c6b", - "reference": "b176e1f1f550ef44c94eb971bf92488de08f7c6b", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/700a880e5089280c7cf3ca1ccf9d9de6630f5d25", + "reference": "700a880e5089280c7cf3ca1ccf9d9de6630f5d25", "shasum": "" }, "require": { @@ -11791,7 +11790,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v7.2.0" + "source": "https://github.com/symfony/dom-crawler/tree/v7.2.3" }, "funding": [ { @@ -11807,7 +11806,7 @@ "type": "tidelift" } ], - "time": "2024-11-13T16:15:23+00:00" + "time": "2025-01-27T11:08:17+00:00" }, { "name": "symfony/maker-bundle",