1
0

12 Commits 0636ad03c7 ... 7e23d95b23

Autor SHA1 Nachricht Datum
  Sangfroid 7e23d95b23 Suppression de deprecated vor 1 Monat
  Sangfroid f20e5c96c1 Remise en forme de l'entoté Film vor 1 Monat
  Sangfroid 2a88e246bb Factorisation envoi mail vor 1 Monat
  Sangfroid c4ba4484fe On remets en place le changement de mot de passe vor 1 Monat
  Sangfroid 763deefd57 Mise à jour recette webpack vor 1 Monat
  Sangfroid 071a9313cb Mise à jour recettes web-profiler vor 1 Monat
  Sangfroid 41689db52f Mise à jour recettes mail vor 1 Monat
  Sangfroid ad7478144f Mise à jour recettes flex vor 1 Monat
  Sangfroid fafad3d3eb Mise à jour recettes apache-pack vor 1 Monat
  Sangfroid 0e48098831 Mise à jour recettes phpunit vor 1 Monat
  Sangfroid 86cec111fd Mise à jour recettes doctrine vor 1 Monat
  Sangfroid e225fd1331 COmposer update vor 1 Monat

+ 0 - 0
.env.dev


Datei-Diff unterdrückt, da er zu groß ist
+ 190 - 287
composer.lock


+ 2 - 0
config/packages/doctrine.yaml

@@ -14,6 +14,8 @@ doctrine:
         report_fields_where_declared: true
         validate_xml_mapping: true
         naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
+        identity_generation_preferences:
+            Doctrine\DBAL\Platforms\PostgreSQLPlatform: identity
         auto_mapping: true
         mappings:
             App:

+ 0 - 6
config/packages/web_profiler.yaml

@@ -1,17 +1,11 @@
 when@dev:
     web_profiler:
         toolbar: true
-        intercept_redirects: false
 
     framework:
         profiler:
-            only_exceptions: false
             collect_serializer_data: true
 
 when@test:
-    web_profiler:
-        toolbar: false
-        intercept_redirects: false
-
     framework:
         profiler: { collect: false }

+ 3 - 3
package.json

@@ -6,19 +6,19 @@
         "@popperjs/core": "^2.11.8",
         "@symfony/stimulus-bridge": "^3.2.1",
         "@symfony/ux-chartjs": "file:vendor/symfony/ux-chartjs/assets",
-        "@symfony/webpack-encore": "^4.0.0",
         "bootstrap": "^5.3.3",
         "bootstrap-star-rating": "^4.1.2",
         "chart.js": "^3.4.1 || ^4.0",
-        "core-js": "^3.36.1",
         "font-awesome": "^4.7.0",
         "jquery": "^3.7.1",
+        "@symfony/webpack-encore": "^5.0.0",
+        "core-js": "^3.38.0",
         "regenerator-runtime": "^0.13.9",
         "sass": "^1.55.0",
         "sass-loader": "^13.0.0",
         "stimulus": "^3.0.1",
         "webpack": "^5.74.0",
-        "webpack-cli": "^4.10.0",
+        "webpack-cli": "^5.1.0",
         "webpack-notifier": "^1.15.0"
     },
     "license": "UNLICENSED",

+ 1 - 1
public/.htaccess

@@ -50,7 +50,7 @@ DirectoryIndex index.php
     # - use Apache >= 2.3.9 and replace all L flags by END flags and remove the
     #   following RewriteCond (best solution)
     RewriteCond %{ENV:REDIRECT_STATUS} =""
-    RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]
+    RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=308,L]
 
     # If the requested filename exists, simply serve it.
     # We only want to let Apache serve files and not directories.

+ 1 - 1
src/Controller/GenreController.php

@@ -9,7 +9,7 @@ use App\Repository\GenreRepository;
 use App\Service\GenreManager;
 use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
 use Symfony\Component\Form\FormFactoryInterface;
-use Symfony\Component\Routing\Annotation\Route;
+use Symfony\Component\Routing\Attribute\Route;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
 

+ 1 - 1
src/Controller/PageController.php

@@ -9,7 +9,7 @@ use Doctrine\ORM\EntityManagerInterface;
 use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\Routing\Annotation\Route;
+use Symfony\Component\Routing\Attribute\Route;
 
 class PageController extends AbstractController
 {

+ 1 - 1
src/Controller/ProfilController.php

@@ -11,7 +11,7 @@ use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
 use Symfony\Component\HttpFoundation\JsonResponse;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\Routing\Annotation\Route;
+use Symfony\Component\Routing\Attribute\Route;
 
 class ProfilController extends AbstractController
 {

+ 1 - 1
src/Controller/RealisateurController.php

@@ -8,7 +8,7 @@ use App\Repository\RealisateurRepository;
 use App\Service\RealisateurManager;
 use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
 use Symfony\Component\Form\FormFactoryInterface;
-use Symfony\Component\Routing\Annotation\Route;
+use Symfony\Component\Routing\Attribute\Route;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\Security\Http\Attribute\IsGranted;

+ 1 - 1
src/Controller/SearchController.php

@@ -7,7 +7,7 @@ use App\Service\Search;
 use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\Routing\Annotation\Route;
+use Symfony\Component\Routing\Attribute\Route;
 
 class SearchController extends AbstractController
 {

+ 15 - 15
src/Controller/SecurityController.php

@@ -12,7 +12,7 @@ use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
 use Symfony\Component\Form\Extension\Core\Type\EmailType;
 use Symfony\Component\Form\Extension\Core\Type\SubmitType;
 use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\Routing\Annotation\Route;
+use Symfony\Component\Routing\Attribute\Route;
 use App\Form\UserType;
 use App\Entity\User;
 use App\Form\ProfileType;
@@ -185,21 +185,21 @@ class SecurityController extends AbstractController
     }
 
     #[Route("/resetpassword/token={token}", name: "security_resetpassword")]
-    public function resetPasswordAction(Request $request, UserManager $userManager, User $user = null): Response
+    public function resetPasswordAction(Request $request, UserManager $userManager, string $token, UserRepository $userRepository): Response
     {
-        if ($user != null) {
-            if ($user->isValidToken()) {
-                $form = $this->createForm(UserEditPasswordType::class, $user);
-                $form->handleRequest($request);
-                if ($form->isSubmitted() && $form->isValid()) {
-                    $userManager->resetPassword($user);
-                    $this->addFlash('success', 'Mot de passe changé, veuillez vous connecter');
-                    return $this->redirectToRoute('videotheque_liste');
-                }
-                return $this->render('security/password.html.twig', array(
-                    'form' => $form
-                ));
+        $user = $userRepository->findOneBy(['token' => $token]);
+        if ($user !== null && $user->isValidToken()) {
+            
+            $form = $this->createForm(UserEditPasswordType::class, $user);
+            $form->handleRequest($request);
+            if ($form->isSubmitted() && $form->isValid()) {
+                $userManager->resetPassword($user);
+                $this->addFlash('success', 'Mot de passe changé, veuillez vous connecter');
+                return $this->redirectToRoute('videotheque_liste');
             }
+            return $this->render('security/password.html.twig', array(
+                'form' => $form
+            ));
         }
         $this->addFlash('warning', "Ce token n'est plus valide");
         return $this->redirectToRoute('videotheque_liste');
@@ -219,7 +219,7 @@ class SecurityController extends AbstractController
     }
 
     #[Route("/activate/token={token}", name: "security_activate")]
-    public function activateAction(Request $request, EntityManagerInterface $em, User $user = null): Response
+    public function activateAction(EntityManagerInterface $em, ?User $user = null): Response
     {
         if ($user != null)
         {

+ 2 - 2
src/Controller/VideothequeCrudController.php

@@ -11,7 +11,7 @@ use Doctrine\ORM\EntityManagerInterface;
 use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
 use Symfony\Component\Form\FormFactoryInterface;
 use Symfony\Component\HttpFoundation\JsonResponse;
-use Symfony\Component\Routing\Annotation\Route;
+use Symfony\Component\Routing\Attribute\Route;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\Security\Http\Attribute\IsGranted;
@@ -41,7 +41,7 @@ class VideothequeCrudController extends AbstractController
     }
 
     #[Route("/ajouter/{idtmdb}", name: "videotheque_ajouter")]
-	public function ajouterAction(Request $request, FilmManager $filmManager, TmdbApiService $tmdbApiService, string $idtmdb=null): Response
+	public function ajouterAction(Request $request, FilmManager $filmManager, TmdbApiService $tmdbApiService, ?string $idtmdb = null): Response
 	{
         if ($idtmdb !== null) {
             $film = $tmdbApiService->hydrateFilm($idtmdb);

+ 1 - 1
src/Controller/VideothequeListController.php

@@ -6,7 +6,7 @@ use App\Dto\FiltersDTO;
 use App\Entity\Commentaire;
 use App\Entity\Realisateur;
 use Symfony\Component\HttpFoundation\JsonResponse;
-use Symfony\Component\Routing\Annotation\Route;
+use Symfony\Component\Routing\Attribute\Route;
 use Symfony\Component\HttpFoundation\Request;
 use App\Entity\Genre;
 use App\Form\CommentaireType;

+ 1 - 15
src/Entity/Film.php

@@ -16,32 +16,25 @@ class Film
     #[ORM\Column(name: "id", type: Types::INTEGER)]
     #[ORM\Id]
     #[ORM\GeneratedValue(strategy: "AUTO")]
-    
     private ?int $id = null;
 
     #[ORM\Column(name: "titre", type: Types::STRING, length: 191)]
-    
     private ?string $titre = null;
 
     #[ORM\Column(name: "annee", type: Types::DATE_IMMUTABLE, nullable: true)]
-    
     private ?\DateTimeInterface $annee = null;
 
     #[ORM\Column(name: "date_submited", type: Types::DATETIME_IMMUTABLE, nullable: true)]
-    
     private ?\DateTimeInterface $dateSubmited = null;
 
     #[ORM\Column(name: "lien", type: Types::STRING, length: 191, nullable: true)]
-    #[Assert\Url()]
-    
+    #[Assert\Url()]    
     private ?string $lien = null;
 
     #[ORM\Column(name: "note", type: Types::FLOAT, nullable: true)]
-    
     private ?float $note = null;
 
     #[ORM\Column(name: "nb_coms", type: Types::INTEGER, nullable: true)]
-    
     private ?int $nbComs = null;
 
     /*
@@ -53,34 +46,27 @@ class Film
     */
 
     #[ORM\ManyToMany(targetEntity: Realisateur::class, inversedBy: "films", cascade: ["persist"])]
-    
     private ?Collection $realisateurs = null;
 
     #[ORM\OneToMany(targetEntity: Commentaire::class, mappedBy: "film", orphanRemoval: true)]
-    
     private ?Collection $commentaires = null;
 
     #[ORM\ManyToOne(targetEntity: User::class)]
     #[ORM\JoinColumn(nullable: true)]
-    
     private ?User $authered = null;
 
     #[ORM\ManyToMany(targetEntity: User::class, inversedBy: "films")]
     #[ORM\JoinTable(name: "filmsavoir_users")]
-    
     private ?Collection $usersWantToView = null;
 
     #[ORM\ManyToMany(targetEntity: User::class, inversedBy: "filmsVus")]
     #[ORM\JoinTable(name: "filmsvus_users")]
-    
     private ?Collection $usersWhoSeen = null;
 
     #[ORM\ManyToMany(targetEntity: Genre::class, cascade: ["persist"])]
-    
     private ?Collection $genres = null;
 
     #[ORM\Column(type: Types::TEXT, nullable: true)]
-    
     private ?string $information = null;
 
     #[ORM\Column(type: Types::DATE_IMMUTABLE, nullable: true)]

+ 0 - 1
src/Entity/User.php

@@ -42,7 +42,6 @@ class User implements UserInterface,PasswordAuthenticatedUserInterface
     private ?string $password = null;
 
     #[ORM\Column(name: "token", type: Types::STRING, length: 191, unique: true)]
-
     private ?string $token = null;
 
     #[ORM\Column(name: "token_validity", type: Types::DATETIME_MUTABLE)]

+ 2 - 2
src/Service/FilmManager.php

@@ -76,13 +76,13 @@ class FilmManager {
         return $this->isWantedToBeSeen($film);
     }
 
-    public function isSeen(Film $film, User $user = null): bool
+    public function isSeen(Film $film, ?User $user = null): bool
     {
         $user = $user ?: $this->user;
         return $film->getUsersWhoSeen()->contains($user);
     }
 
-    public function isWantedToBeSeen(Film $film, User $user = null): bool
+    public function isWantedToBeSeen(Film $film, ?User $user = null): bool
     {
         $user = $user ?: $this->user;
         return $film->getUsersWantToView()->contains($user);

+ 8 - 3
src/Service/Mail.php

@@ -44,12 +44,17 @@ class Mail
         $this->mailer->send($mail);
     }
 
+    protected function setBody(string $template, User $user, string $lien): string
+    {
+        return $this->templating->render($template, ['user' => $user, 'lien'  => $lien]);
+    }
+
     public function sendMailActivation(User $user, string $lien): void
     {
         $subject = "Activation de votre compte";
         $template = 'security/mail_activate.html.twig';
         $to = $user->getMail();
-        $body = $this->templating->render($template, ['user' => $user, 'lien'  => $lien]);
+        $body = $this->setBody($template, $user, $lien);
         $this->sendMessage($subject, $to, $body);
     }
 
@@ -58,7 +63,7 @@ class Mail
         $subject = "Demande d'activation";
         $template = 'security/mail_demande_activation.html.twig';
         $to = $this->from;
-        $body = $this->templating->render($template, ['user' => $user, 'lien' => $lien]);
+        $body = $this->setBody($template, $user, $lien);
         $this->sendMessage($subject, $to, $body);
     }
 
@@ -67,7 +72,7 @@ class Mail
         $subject = "Mot de passe perdu";
         $template = 'security/mail_tokenmdp.html.twig';
         $to = $user->getMail();
-        $body = $this->templating->render($template, ['user' => $user, 'lien'  => $lien]);
+        $body = $this->setBody($template, $user, $lien);
         $this->sendMessage($subject, $to, $body);
     }
 }

+ 16 - 15
symfony.lock

@@ -25,12 +25,12 @@
         "version": "v0.5.3"
     },
     "doctrine/doctrine-bundle": {
-        "version": "2.12",
+        "version": "2.14",
         "recipe": {
             "repo": "github.com/symfony/recipes",
             "branch": "main",
-            "version": "2.12",
-            "ref": "7266981c201efbbe02ae53c87f8bb378e3f825ae"
+            "version": "2.13",
+            "ref": "8d96c0b51591ffc26794d865ba3ee7d193438a83"
         },
         "files": [
             "config/packages/doctrine.yaml",
@@ -132,7 +132,7 @@
             "repo": "github.com/symfony/recipes",
             "branch": "main",
             "version": "9.6",
-            "ref": "7364a21d87e658eb363c5020c072ecfdc12e2326"
+            "ref": "6a9341aa97d441627f8bd424ae85dc04c944f8b4"
         },
         "files": [
             ".env.test",
@@ -209,7 +209,7 @@
             "repo": "github.com/symfony/recipes-contrib",
             "branch": "main",
             "version": "1.0",
-            "ref": "0f18b4decdf5695d692c1d0dfd65516a07a6adf1"
+            "ref": "5d454ec6cc4c700ed3d963f3803e1d427d9669fb"
         },
         "files": [
             "public/.htaccess"
@@ -291,15 +291,16 @@
         "version": "v4.2.8"
     },
     "symfony/flex": {
-        "version": "2.2",
+        "version": "2.5",
         "recipe": {
             "repo": "github.com/symfony/recipes",
             "branch": "main",
-            "version": "1.0",
-            "ref": "146251ae39e06a95be0fe3d13c807bcf3938b172"
+            "version": "2.4",
+            "ref": "52e9754527a15e2b79d9a610f98185a1fe46622a"
         },
         "files": [
-            ".env"
+            ".env",
+            ".env.dev"
         ]
     },
     "symfony/form": {
@@ -331,12 +332,12 @@
         "version": "v4.2.8"
     },
     "symfony/mailer": {
-        "version": "6.4",
+        "version": "7.1",
         "recipe": {
             "repo": "github.com/symfony/recipes",
             "branch": "main",
             "version": "4.3",
-            "ref": "df66ee1f226c46f01e85c29c2f7acce0596ba35a"
+            "ref": "09051cfde49476e3c12cd3a0e44289ace1c75a4f"
         },
         "files": [
             "config/packages/mailer.yaml"
@@ -538,12 +539,12 @@
         "version": "v4.2.8"
     },
     "symfony/web-profiler-bundle": {
-        "version": "6.1",
+        "version": "7.1",
         "recipe": {
             "repo": "github.com/symfony/recipes",
             "branch": "main",
             "version": "6.1",
-            "ref": "e42b3f0177df239add25373083a564e5ead4e13a"
+            "ref": "8b51135b84f4266e3b4c8a6dc23c9d1e32e543b7"
         },
         "files": [
             "config/packages/web_profiler.yaml",
@@ -551,12 +552,12 @@
         ]
     },
     "symfony/webpack-encore-bundle": {
-        "version": "2.1",
+        "version": "2.2",
         "recipe": {
             "repo": "github.com/symfony/recipes",
             "branch": "main",
             "version": "2.0",
-            "ref": "082d754b3bd54b3fc669f278f1eea955cfd23cf5"
+            "ref": "20af60d17dc26c2f2b67f8ee1038cd2da1ca8fb3"
         },
         "files": [
             "assets/app.js",

+ 2 - 2
templates/base.html.twig

@@ -5,11 +5,11 @@
 		<meta name="viewport" content="width=device-width, initial-scale=1">
         <title>{% block title %}Videothèque{% endblock %}</title>
 		<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 128 128%22><text y=%221.2em%22 font-size=%2296%22>⚫️</text></svg>">
-		{{ encore_entry_link_tags('app') }}
 		{% block stylesheets %}{% endblock %}
+            {{ encore_entry_link_tags('app') }}
 
-		{{ encore_entry_script_tags('app') }}
 		{% block javascripts %}{% endblock %}
+            {{ encore_entry_script_tags('app') }}
         <link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}" />
     </head>
     <body>

+ 1 - 1
webpack.config.js

@@ -53,7 +53,7 @@ Encore
     // enables and configure @babel/preset-env polyfills
     .configureBabelPresetEnv((config) => {
         config.useBuiltIns = 'usage';
-        config.corejs = '3.23';
+        config.corejs = '3.38';
     })
 
     // enables Sass/SCSS support

Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.