Skip to content

Commit 48d317e

Browse files
authored
feature #1521 [make:reset-password] improve types for static analysis in userland
1 parent d711796 commit 48d317e

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

src/Maker/MakeResetPassword.php

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ public function generate(InputInterface $input, ConsoleStyle $io, Generator $gen
272272
]
273273
);
274274

275-
$this->generateRequestEntity($generator, $requestClassNameDetails, $repositoryClassNameDetails);
275+
$this->generateRequestEntity($generator, $requestClassNameDetails, $repositoryClassNameDetails, $userClassNameDetails);
276276

277277
$this->setBundleConfig($io, $generator, $repositoryClassNameDetails->getFullName());
278278

@@ -405,8 +405,9 @@ private function successMessage(ConsoleStyle $io, string $requestClassName): voi
405405
$io->newLine();
406406
}
407407

408-
private function generateRequestEntity(Generator $generator, ClassNameDetails $requestClassNameDetails, ClassNameDetails $repositoryClassNameDetails): void
408+
private function generateRequestEntity(Generator $generator, ClassNameDetails $requestClassNameDetails, ClassNameDetails $repositoryClassNameDetails, ClassNameDetails $userClassDetails): void
409409
{
410+
// Generate ResetPasswordRequest Entity
410411
$requestEntityPath = $this->entityClassGenerator->generateEntityClass(
411412
entityClassDetails: $requestClassNameDetails,
412413
apiResource: false,
@@ -426,8 +427,10 @@ private function generateRequestEntity(Generator $generator, ClassNameDetails $r
426427

427428
$manipulator->addTrait(ResetPasswordRequestTrait::class);
428429

430+
$manipulator->addUseStatementIfNecessary($userClassDetails->getFullName());
431+
429432
$manipulator->addConstructor([
430-
(new Param('user'))->setType('object')->getNode(),
433+
(new Param('user'))->setType($userClassDetails->getShortName())->getNode(),
431434
(new Param('expiresAt'))->setType('\DateTimeInterface')->getNode(),
432435
(new Param('selector'))->setType('string')->getNode(),
433436
(new Param('hashedToken'))->setType('string')->getNode(),
@@ -444,7 +447,7 @@ private function generateRequestEntity(Generator $generator, ClassNameDetails $r
444447
mapInverseRelation: false,
445448
avoidSetter: true,
446449
isCustomReturnTypeNullable: false,
447-
customReturnType: 'object',
450+
customReturnType: $userClassDetails->getShortName(),
448451
isOwning: true,
449452
));
450453

@@ -459,6 +462,7 @@ private function generateRequestEntity(Generator $generator, ClassNameDetails $r
459462

460463
$generator->writeChanges();
461464

465+
// Generate ResetPasswordRequestRepository
462466
$pathRequestRepository = $this->fileManager->getRelativePathForFutureClass(
463467
$repositoryClassNameDetails->getFullName()
464468
);
@@ -471,7 +475,14 @@ private function generateRequestEntity(Generator $generator, ClassNameDetails $r
471475

472476
$manipulator->addTrait(ResetPasswordRequestRepositoryTrait::class);
473477

474-
$methodBuilder = $manipulator->createMethodBuilder('createResetPasswordRequest', ResetPasswordRequestInterface::class, false);
478+
$methodBuilder = $manipulator->createMethodBuilder(
479+
methodName: 'createResetPasswordRequest',
480+
returnType: ResetPasswordRequestInterface::class,
481+
isReturnTypeNullable: false,
482+
commentLines: [sprintf('@param %s $user', $userClassDetails->getShortName())]
483+
);
484+
485+
$manipulator->addUseStatementIfNecessary($userClassDetails->getFullName());
475486

476487
$manipulator->addMethodBuilder($methodBuilder, [
477488
(new Param('user'))->setType('object')->getNode(),

src/Resources/skeleton/resetPassword/ResetPasswordController.tpl.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ public function reset(Request $request, UserPasswordHasherInterface $passwordHas
7474
}
7575

7676
try {
77+
/** @var <?= $user_class_name ?> $user */
7778
$user = $this->resetPasswordHelper->validateTokenAndFetchUser($token);
7879
} catch (ResetPasswordExceptionInterface $e) {
7980
$this->addFlash('reset_password_error', sprintf(

0 commit comments

Comments
 (0)