protected function execute(InputInterface $input, OutputInterface $output) { $project = \Psc\PSC::getProject(); $em = $project->getModule('Doctrine')->getEntityManager($input->getOption('con')); try { $r = new \Psc\Form\EmailValidatorRule(); $email = $r->validate($input->getArgument('email')); } catch (\Exception $e) { $output->writeln('FEHLER: E-Mail-Adresse ist nicht korrekt.'); return 1; } if (($password = $input->getOption('password')) == NULL) { $password = \Webforge\Common\String::random(6); } $c = $project->getUserClass(); if ($input->getOption('reset-password') == TRUE) { $userRep = $em->getRepository($c); $user = $userRep->find($email); if (!$user instanceof \Psc\CMS\User) { $output->writeln('User mit der Email: "' . $email . '" nicht gefunden.'); return 2; } $output->writeln('Passwort Reset für: ' . $email); } else { $user = new $c($email); } $user->hashPassword($password); try { $em->persist($user); $em->flush(); } catch (\PDOException $e) { if (\Psc\Doctrine\Exception::convertPDOException($e) instanceof \Psc\Doctrine\UniqueConstraintException) { $output->writeln('User existiert bereits. --reset-password / -r nehmen, um ein neues Passwort zu erzeugen'); return 3; } throw $e; } $output->writeln(sprintf('Passwort: "%s"', $password)); $output->writeln('done.'); return 0; }