canResetPassword = $canResetPassword; $this->fetchesPasswordReset = $fetchesPasswordReset; $this->changePassword = $changePassword; $this->completesPasswordResetToken = $completesPasswordResetToken; } /** * @param Request $request * @return JsonResponse * @throws \App\Classes\Exceptions\AccessForbiddenException * @throws \App\Classes\Exceptions\InternalServerErrorException * @throws \App\Classes\Exceptions\MalformedRequestException * @throws \App\Classes\Exceptions\RequestValidationException * @throws \App\Classes\Exceptions\ResourceNotFoundException */ public function logic(Request $request): JsonResponse { $object = new PasswordResetObject($request->input('token'), new NewPasswordObject($request->input('password'), $request->input('confirmPassword'))); if($this->canResetPassword->passes($object)) { /** @var PasswordReset $passwordReset */ $passwordReset = $this->fetchesPasswordReset->execute(['token' => $object->getToken(), 'with_user']); $this->changePassword->execute($passwordReset->user, $object->getNewPassword()); $this->completesPasswordResetToken->execute($passwordReset); return $this->response(); } } }