From 31dce88d3bdea9e080b12c94ace41573e093b881 Mon Sep 17 00:00:00 2001
From: Camille Simiand <camille.simiand@tetras-libre.fr>
Date: Mon, 10 Jan 2022 12:30:55 +0100
Subject: [PATCH] Increase and fix errors phpstan level 7

---
 phpstan-tests.neon                                | 2 +-
 phpstan.neon                                      | 2 +-
 src/Controller/ResetPasswordController.php        | 4 +++-
 src/Repository/ResetPasswordRequestRepository.php | 1 +
 src/Security/AppCustomAuthenticator.php           | 7 ++++---
 5 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/phpstan-tests.neon b/phpstan-tests.neon
index 106428c..64e8c88 100644
--- a/phpstan-tests.neon
+++ b/phpstan-tests.neon
@@ -1,5 +1,5 @@
 parameters:
-    level: 6
+    level: 7
     paths:
         - tests/
     symfony:
diff --git a/phpstan.neon b/phpstan.neon
index e56bade..a703b75 100644
--- a/phpstan.neon
+++ b/phpstan.neon
@@ -1,5 +1,5 @@
 parameters:
-    level: 6
+    level: 7
     paths:
         - src/
     symfony:
diff --git a/src/Controller/ResetPasswordController.php b/src/Controller/ResetPasswordController.php
index 4eb6d14..4ea2ab3 100644
--- a/src/Controller/ResetPasswordController.php
+++ b/src/Controller/ResetPasswordController.php
@@ -12,7 +12,6 @@ use Symfony\Component\HttpFoundation\RedirectResponse;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpFoundation\Response;
 use Symfony\Component\Mailer\MailerInterface;
-use Symfony\Component\Mime\Address;
 use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
 use Symfony\Component\Routing\Annotation\Route;
 use SymfonyCasts\Bundle\ResetPassword\Controller\ResetPasswordControllerTrait;
@@ -102,6 +101,9 @@ class ResetPasswordController extends AbstractController
 
         try {
             $user = $this->resetPasswordHelper->validateTokenAndFetchUser($token);
+            if (! $user instanceof User) {
+                throw new \Exception("User should be an instance of UserPasswordHasherInterface");
+            }
         } catch (ResetPasswordExceptionInterface $e) {
             $this->addFlash('reset_password_error', sprintf(
                 'There was a problem validating your reset request - %s',
diff --git a/src/Repository/ResetPasswordRequestRepository.php b/src/Repository/ResetPasswordRequestRepository.php
index a8e7738..f0ecba6 100644
--- a/src/Repository/ResetPasswordRequestRepository.php
+++ b/src/Repository/ResetPasswordRequestRepository.php
@@ -30,6 +30,7 @@ class ResetPasswordRequestRepository extends ServiceEntityRepository implements
         string $selector,
         string $hashedToken
     ): ResetPasswordRequestInterface {
+        /** @phpstan-ignore-next-line */
         return new ResetPasswordRequest($user, $expiresAt, $selector, $hashedToken);
     }
 }
diff --git a/src/Security/AppCustomAuthenticator.php b/src/Security/AppCustomAuthenticator.php
index 05d6c1b..94b1da2 100644
--- a/src/Security/AppCustomAuthenticator.php
+++ b/src/Security/AppCustomAuthenticator.php
@@ -32,14 +32,15 @@ class AppCustomAuthenticator extends AbstractLoginFormAuthenticator
     public function authenticate(Request $request): PassportInterface
     {
         $email = $request->request->get('email', '');
+        $password = $request->request->get('password', '');
 
         $request->getSession()->set(Security::LAST_USERNAME, $email);
 
         return new Passport(
-            new UserBadge($email),
-            new PasswordCredentials($request->request->get('password', '')),
+            new UserBadge((string) $email),
+            new PasswordCredentials((string) $password),
             [
-                new CsrfTokenBadge('authenticate', $request->request->get('_csrf_token')),
+                new CsrfTokenBadge('authenticate', (string) $request->request->get('_csrf_token')),
             ]
         );
     }
-- 
GitLab