Exemple #1
0
 /**
  * 会員登録画面.
  *
  * @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()));
 }