Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Controller;
- use App\Form\UserType;
- use App\Entity\User;
- use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
- use Symfony\Component\HttpFoundation\RedirectResponse;
- use Symfony\Component\HttpFoundation\Request;
- use Symfony\Component\HttpFoundation\Response;
- use Symfony\Component\Routing\Annotation\Route;
- use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
- use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
- use App\Coins\CoinActions;
- use App\Entity\WalletAddress;
- use App\Coins\MainAddress;
- class RegistrationController extends AbstractController
- {
- /**
- * @Route("/register", name="user_registration")
- */
- public function register(Request $request, UserPasswordEncoderInterface $passwordEncoder, \Swift_Mailer $mailer)
- {
- $user = new User();
- $form = $this->createForm(UserType::class, $user);
- $form->handleRequest($request);
- if ($form->isSubmitted() && $form->isValid()) {
- $password = $passwordEncoder->encodePassword($user, $user->getPlainPassword());
- $user->setPassword($password);
- $entityManager = $this->getDoctrine()->getManager();
- $entityManager->persist($user);
- $entityManager->flush();
- $user->generateRestoreToken();
- $entityManager->persist($user);
- $entityManager->flush();
- $link = $this->getParameter('host').'/email/confirmed/'.$user->getRestoreToken();
- $message = (new \Swift_Message('Registration on the portal evos.one'))
- ->setFrom($this->getParameter('email'), 'EvosCoin')
- ->setTo($user->getEmail())
- ->setBody(
- $this->renderView(
- 'emails/registration.html.twig',
- ['login' => $user->getEmail(), 'passwd' => $user->getPlainPassword(), 'link' => $link]
- ),
- 'text/html'
- );
- $mailer->send($message);
- return $this->redirectToRoute('email_confirm');
- }
- return $this->render(
- 'registration/register.html.twig',
- [
- 'form' => $form->createView(),
- 'dialog_title' => 'Registration'
- ]
- );
- }
- /**
- * @Route("/email/confirm", name="email_confirm", methods={"GET"})
- */
- public function emailConfirm(Request $request, \Swift_Mailer $mailer)
- {
- return $this->render(
- 'registration/email_confirm.html.twig' ,[
- 'type' => 'confirm'
- ]);
- }
- /**
- * @Route("/user/restore/access", name="user_restore_access", methods={"GET", "POST"})
- */
- public function restoreAccess(Request $request, \Swift_Mailer $mailer)
- {
- $email = $request->get('email', false);
- $error = false;
- $dialog_title = 'Restore access';
- if (!$email) {
- return $this->render(
- 'registration/restore_access.html.twig' ,[
- 'error' => $error,
- 'dialog_title' => $dialog_title
- ]);
- } else {
- $em = $this->getDoctrine()->getManager();
- /** @var User $user */
- $user = $em->getRepository('App\Entity\User')->findOneBy(['email' => $email]);
- if ($user) {
- $user->generateRestoreToken();
- $em->persist($user);
- $em->flush();
- $link = $this->getParameter('host') . '/email/restore/confirmed/' . $user->getRestoreToken();
- $message = (new \Swift_Message('Restore access on the portal evos.one'))
- ->setFrom($this->getParameter('email'), 'EvosCoin')
- ->setTo($user->getEmail())
- ->setBody(
- $this->renderView(
- 'emails/restore.html.twig',
- ['login' => $user->getEmail(), 'link' => $link]
- ),
- 'text/html'
- );
- $mailer->send($message);
- } else {
- $error = 'Email not found!';
- return $this->render(
- 'registration/restore_access.html.twig' ,[
- 'error' => $error,
- 'dialog_title' => $dialog_title
- ]);
- }
- }
- return $this->render(
- 'registration/email_confirm.html.twig' ,[
- 'type' => 'restore',
- 'error' => $error,
- 'dialog_title' => $dialog_title
- ]);
- }
- /**
- * @Route("/email/confirmed/{token}", name="email_confirmed", methods={"GET"})
- */
- public function emailConfirmed(Request $request, MainAddress $mainAddress)
- {
- $token = $request->get('token');
- $em = $this->getDoctrine()->getManager();
- /** @var User $user */
- $user = $em->getRepository('App\Entity\User')->findOneBy(['restore_token' => $token]);
- if (!empty($user) && $user->getRestoreTokenExpiring() >= new \DateTime('now')) {
- $user->setIsActive(1);
- $user->setRestoreTokenExpiring(Null);
- $user->setRestoreToken(Null);
- $em->persist($user);
- $em->flush();
- $addressRes = $mainAddress->checkMasterAddresses($user);
- /*try {
- // Generate first address EVOS
- $coinActions = new CoinActions($this->getParameter('coins'), $user->getAlias(), 'EVOS');
- $address = $coinActions->createAddress();
- $walletAddress = new WalletAddress();
- $walletAddress->setCoin('EVOS');
- $walletAddress->setUid($user->getId());
- $walletAddress->setAddress($address);
- $walletAddress->setBalance(0);
- $em = $this->getDoctrine()->getManager();
- $em->persist($walletAddress);
- $em->flush();
- $coinActions = new CoinActions($this->getParameter('coins'), $user->getAlias(), 'BTC');
- $address = $coinActions->createAddress();
- $walletAddress = new WalletAddress();
- $walletAddress->setCoin('BTC');
- $walletAddress->setUid($user->getId());
- $walletAddress->setAddress($address);
- $walletAddress->setBalance(0);
- $em->persist($walletAddress);
- $em->flush();
- }
- catch (\Exception $e) {
- // TODO логировать
- }*/
- $token = new UsernamePasswordToken(
- $user,
- $user->getPassword(),
- 'main',
- $user->getRoles()
- );
- $this->get('security.token_storage')->setToken($token);
- $this->get('session')->set('_security_main', serialize($token));
- $this->get('session')->set('coin', 'evos');
- return $this->redirectToRoute('index');
- }
- return new RedirectResponse('/login?error=Invalid token!');
- }
- /**
- * @Route("/email/restore/confirmed/{token}", name="email_restore_confirmed", methods={"GET", "POST"})
- */
- public function emailRestoreConfirmed($token, UserPasswordEncoderInterface $passwordEncoder, Request $request, MainAddress $mainAddress)
- {
- $password = $request->get('password');
- $em = $this->getDoctrine()->getManager();
- /** @var User $user */
- $user = $em->getRepository('App\Entity\User')->findOneBy(['restore_token' => $token]);
- if (!empty($user) && $user->getRestoreTokenExpiring() >= new \DateTime('now')) {
- if (!empty($password)) {
- $user->setIsActive(1);
- $user->setRestoreTokenExpiring(Null);
- $user->setRestoreToken(Null);
- $user->setPlainPassword($password);
- $password = $passwordEncoder->encodePassword($user, $user->getPlainPassword());
- $user->setPassword($password);
- $em->persist($user);
- $em->flush();
- $addressRes = $mainAddress->checkMasterAddresses($user);
- $token = new UsernamePasswordToken (
- $user,
- $user->getPassword(),
- 'main',
- $user->getRoles()
- );
- $this->get('security.token_storage')->setToken($token);
- $this->get('session')->set('_security_main', serialize($token));
- return $this->redirectToRoute('index');
- } else {
- return $this->render(
- 'registration/email_restore.html.twig',
- ['token' => $token]
- );
- }
- } else {
- // TODO редирект куда-то
- return new Response('Invalid token!');
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement