public function indexAction(Request $request)
{
$translator = $this->container->get('translator');
$preferencesService = $this->container->get('system_preferences_service');
$sent = false;
$error = '';
$disabled = false;
$form = $this->container->get('form.factory')->create(new PasswordRecoveryType(), array(), array());
if ($preferencesService->get("PasswordRecovery") == 'N') {
$disabled = true;
} else {
if ($request->isMethod('POST')) {
$form->handleRequest($request);
if ($form->isValid()) {
$data = $form->getData();
$user = $this->container->get('user')->findOneBy(array('email' => $data['email'], 'is_admin' => true));
if ($user != null && is_numeric($user->getId()) && $user->getId() > 0) {
try {
$token = $this->setPasswordResetToken($user);
$this->sendToken($data['email'], $token);
$sent = true;
} catch (\Exception $exception) {
$error = $translator->trans("Fatal error occurred. Please try again later.", array(), 'home');
}
} else {
$error = $translator->trans("No user is registered with this email.", array(), 'home');
}
}
}
}
return array('form' => $form->createView(), 'sent' => $sent, 'disabled' => $disabled, 'error' => $error);
}