/** * 会員登録画面. * * @param Application $app * @param Request $request * @return \Symfony\Component\HttpFoundation\Response */ public function index(Application $app, Request $request) { if ($app->isGranted('ROLE_USER')) { log_info('認証済のためログイン処理をスキップ'); return $app->redirect($app->url('mypage')); } /** @var $Customer \Eccube\Entity\Customer */ $Customer = $app['eccube.repository.customer']->newCustomer(); /* @var $builder \Symfony\Component\Form\FormBuilderInterface */ $builder = $app['form.factory']->createBuilder('entry', $Customer); $event = new EventArgs(array('builder' => $builder, 'Customer' => $Customer), $request); $app['eccube.event.dispatcher']->dispatch(EccubeEvents::FRONT_ENTRY_INDEX_INITIALIZE, $event); /* @var $form \Symfony\Component\Form\FormInterface */ $form = $builder->getForm(); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { switch ($request->get('mode')) { case 'confirm': log_info('会員登録確認開始'); $builder->setAttribute('freeze', true); $form = $builder->getForm(); $form->handleRequest($request); log_info('会員登録確認完了'); return $app->render('Entry/confirm.twig', array('form' => $form->createView())); case 'complete': log_info('会員登録開始'); $Customer->setSalt($app['eccube.repository.customer']->createSalt(5))->setPassword($app['eccube.repository.customer']->encryptPassword($app, $Customer))->setSecretKey($app['eccube.repository.customer']->getUniqueSecretKey($app)); $CustomerAddress = new \Eccube\Entity\CustomerAddress(); $CustomerAddress->setFromCustomer($Customer); $app['orm.em']->persist($Customer); $app['orm.em']->persist($CustomerAddress); $app['orm.em']->flush(); log_info('会員登録完了'); $event = new EventArgs(array('form' => $form, 'Customer' => $Customer, 'CustomerAddress' => $CustomerAddress), $request); $app['eccube.event.dispatcher']->dispatch(EccubeEvents::FRONT_ENTRY_INDEX_COMPLETE, $event); $activateUrl = $app->url('entry_activate', array('secret_key' => $Customer->getSecretKey())); /** @var $BaseInfo \Eccube\Entity\BaseInfo */ $BaseInfo = $app['eccube.repository.base_info']->get(); $activateFlg = $BaseInfo->getOptionCustomerActivate(); // 仮会員設定が有効な場合は、確認メールを送信し完了画面表示. if ($activateFlg) { // メール送信 $app['eccube.service.mail']->sendCustomerConfirmMail($Customer, $activateUrl); if ($event->hasResponse()) { return $event->getResponse(); } log_info('仮会員登録完了画面へリダイレクト'); return $app->redirect($app->url('entry_complete')); // 仮会員設定が無効な場合は認証URLへ遷移させ、会員登録を完了させる. } else { log_info('本会員登録画面へリダイレクト'); return $app->redirect($activateUrl); } } } return $app->render('Entry/index.twig', array('form' => $form->createView())); }
/** * Index * * @param Application $app * @param Request $request * @return \Symfony\Component\HttpFoundation\Response */ public function index(Application $app, Request $request) { /** @var $Customer \Eccube\Entity\Customer */ $Customer = $app['eccube.repository.customer']->newCustomer(); /* @var $builder \Symfony\Component\Form\FormBuilderInterface */ $builder = $app['form.factory']->createBuilder('entry', $Customer); /* @var $form \Symfony\Component\Form\FormInterface */ $form = $builder->getForm(); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { switch ($request->get('mode')) { case 'confirm': $builder->setAttribute('freeze', true); $form = $builder->getForm(); $form->handleRequest($request); return $app['twig']->render('Entry/confirm.twig', array('form' => $form->createView())); case 'complete': $Customer->setSalt($app['eccube.repository.customer']->createSalt(5))->setPassword($app['eccube.repository.customer']->encryptPassword($app, $Customer))->setSecretKey($app['eccube.repository.customer']->getUniqueSecretKey($app)); $CustomerAddress = new \Eccube\Entity\CustomerAddress(); $CustomerAddress->setFromCustomer($Customer); $app['orm.em']->persist($Customer); $app['orm.em']->persist($CustomerAddress); $app['orm.em']->flush(); $activateUrl = $app->url('entry_activate', array('secret_key' => $Customer->getSecretKey())); /** @var $BaseInfo \Eccube\Entity\BaseInfo */ $BaseInfo = $app['eccube.repository.base_info']->get(); $activateFlg = $BaseInfo->getOptionCustomerActivate(); // 仮会員設定が有効な場合は、確認メールを送信し完了画面表示. if ($activateFlg) { // メール送信 $app['eccube.service.mail']->sendCustomerConfirmMail($Customer, $activateUrl); return $app->redirect($app->url('entry_complete')); // 仮会員設定が無効な場合は認証URLへ遷移させ、会員登録を完了させる. } else { return $app->redirect($activateUrl); } } } return $app['view']->render('Entry/index.twig', array('form' => $form->createView())); }