public function index(Application $app, Request $request)
{
$builder = $app['form.factory']->createNamedBuilder('', 'forgot');
$event = new EventArgs(array('builder' => $builder), $request);
$app['eccube.event.dispatcher']->dispatch(EccubeEvents::FRONT_FORGOT_INDEX_INITIALIZE, $event);
$form = $builder->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$Customer = $app['eccube.repository.customer']->getActiveCustomerByEmail($form->get('login_email')->getData());
if (!is_null($Customer)) {
// リセットキーの発行・有効期限の設定
$Customer->setResetKey($app['eccube.repository.customer']->getUniqueResetKey($app))->setResetExpire(new \DateTime('+' . $app['config']['customer_reset_expire'] . ' min'));
// リセットキーを更新
$app['orm.em']->persist($Customer);
$app['orm.em']->flush();
$event = new EventArgs(array('form' => $form, 'Customer' => $Customer), $request);
$app['eccube.event.dispatcher']->dispatch(EccubeEvents::FRONT_FORGOT_INDEX_COMPLETE, $event);
// 完了URLの生成
$reset_url = $app->url('forgot_reset', array('reset_key' => $Customer->getResetKey()));
// メール送信
$app['eccube.service.mail']->sendPasswordResetNotificationMail($Customer, $reset_url);
// ログ出力
$app['monolog']->addInfo('send reset password mail to:' . "{$Customer->getId()} {$Customer->getEmail()} {$request->getClientIp()}");
}
return $app->redirect($app->url('forgot_complete'));
}
return $app->render('Forgot/index.twig', array('form' => $form->createView()));
}