Skip to content

Commit

Permalink
feature #1521 [make:reset-password] improve types for static analysis…
Browse files Browse the repository at this point in the history
… in userland
  • Loading branch information
jrushlow authored Apr 21, 2024
1 parent d711796 commit 48d317e
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 5 deletions.
21 changes: 16 additions & 5 deletions src/Maker/MakeResetPassword.php
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,7 @@ public function generate(InputInterface $input, ConsoleStyle $io, Generator $gen
]
);

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

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

Expand Down Expand Up @@ -405,8 +405,9 @@ private function successMessage(ConsoleStyle $io, string $requestClassName): voi
$io->newLine();
}

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

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

$manipulator->addUseStatementIfNecessary($userClassDetails->getFullName());

$manipulator->addConstructor([
(new Param('user'))->setType('object')->getNode(),
(new Param('user'))->setType($userClassDetails->getShortName())->getNode(),
(new Param('expiresAt'))->setType('\DateTimeInterface')->getNode(),
(new Param('selector'))->setType('string')->getNode(),
(new Param('hashedToken'))->setType('string')->getNode(),
Expand All @@ -444,7 +447,7 @@ private function generateRequestEntity(Generator $generator, ClassNameDetails $r
mapInverseRelation: false,
avoidSetter: true,
isCustomReturnTypeNullable: false,
customReturnType: 'object',
customReturnType: $userClassDetails->getShortName(),
isOwning: true,
));

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

$generator->writeChanges();

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

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

$methodBuilder = $manipulator->createMethodBuilder('createResetPasswordRequest', ResetPasswordRequestInterface::class, false);
$methodBuilder = $manipulator->createMethodBuilder(
methodName: 'createResetPasswordRequest',
returnType: ResetPasswordRequestInterface::class,
isReturnTypeNullable: false,
commentLines: [sprintf('@param %s $user', $userClassDetails->getShortName())]
);

$manipulator->addUseStatementIfNecessary($userClassDetails->getFullName());

$manipulator->addMethodBuilder($methodBuilder, [
(new Param('user'))->setType('object')->getNode(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ public function reset(Request $request, UserPasswordHasherInterface $passwordHas
}

try {
/** @var <?= $user_class_name ?> $user */
$user = $this->resetPasswordHelper->validateTokenAndFetchUser($token);
} catch (ResetPasswordExceptionInterface $e) {
$this->addFlash('reset_password_error', sprintf(
Expand Down

0 comments on commit 48d317e

Please sign in to comment.