?? GreyFile — Mystic File Browser

Current path: home/webdevt/cryptoimpot.fr/module/User/src/Controller/



?? Go up: /home/webdevt/cryptoimpot.fr/module/User/src

?? Viewing: AuthController.php

<?php

namespace User\Controller;

use Laminas\Mvc\Controller\AbstractActionController;
use Laminas\View\Model\ViewModel;
use Laminas\Authentication\Result;
use Laminas\Uri\Uri;
use User\Form\LoginForm;
use User\Entity\User;

/**
 * This controller is responsible for letting the user to log in and log out.
 */
class AuthController extends AbstractActionController {

    /**
     * Entity manager.
     * @var Doctrine\ORM\EntityManager
     */
    private $entityManager;

    /**
     * Auth manager.
     * @var User\Service\AuthManager
     */
    private $authManager;

    /**
     * User manager.
     * @var User\Service\UserManager
     */
    private $userManager;

    /**
     * Constructor.
     */
    public function __construct($entityManager, $authManager, $userManager) {
        $this->entityManager = $entityManager;
        $this->authManager = $authManager;
        $this->userManager = $userManager;
    }

    /**
     * This action displays a page allowing to add a new user.
     */
    public function registerAction() {
        
        if($user = $this->currentUser()) {
            return $this->redirect()->toRoute(\Application\Controller\InformationController::ROUTE_INFORMATION);
        } 
        // Create user form
        $form = new \User\Form\RegisterForm();
         $data = $this->params()->fromQuery();
         //var_dump($data);
//         if ($this->getRequest()->isGet()) {
//              $data = $this->params()->fromQuery();
//
//            $form->setData($data);
//           
//           
//         }

        // Check if user has submitted the form
        if ($this->getRequest()->isPost()) {

            // Fill in the form with POST data
            $data = $this->params()->fromPost();

            $form->setData($data);

            // Validate form
            if ($form->isValid()) {
                //exit;
                // Get filtered and validated data
                $data = $form->getData();

                // Add user.
                //@todo enable user
                //$data['status'] = User::STATUS_ACTIVE;

                $data['status'] = 0;

                if (!$this->userManager->checkUserExists($data['email'])) {
                    $user = $this->userManager->addUser($data);
                    return $this->redirect()->toRoute('login');
                } else {
                    $message = 'Email déjà enregistré. Pour vous connecter cliquer sur "Déjà un compte"';
                  
                    $this->flashMessenger()->addErrorMessage($message);
                    return $this->redirect()->toRoute('register');
                    
                }

                // Redirect to "login" page or autoconnect
//                        ['action'=>'view', 'id'=>$user->getId()]);
//                return $this->redirect()->toRoute('users', 
//                        ['action'=>'view', 'id'=>$user->getId()]);                
            } else {
//               $messages = $form->getMessages();
//               foreach($messages as $name => $arrayMessage) {
//                   foreach($arrayMessage as $type => $message) {
//                        $this->flashMessenger()->addErrorMessage($message);
//                          echo $message;
//                    //exit;
//                   }
//               }
//               return $this->redirect()->toRoute('register', [], ['query' => ['email' => $data['email']]]);
//               var_dump($messages); exit;
//               $this->flashMessenger()->addErrorMessage($messages);
            }
        }
        $this->layout()->setTemplate('layout/layout-ledgio')
                ->setVariable('form',$form);
        return new ViewModel([
            'form' => $form
        ]);
    }

    /**
     * Authenticates user given email address and password credentials.
     */
    public function loginAction() {
        if($user = $this->currentUser()) {
            return $this->redirect()->toRoute(\Application\Controller\InformationController::ROUTE_INFORMATION);
        } 
        // Retrieve the redirect URL (if passed). We will redirect the user to this
        // URL after successfull login.
        $redirectUrl = (string) $this->params()->fromQuery('redirectUrl', '');
        if (strlen($redirectUrl) > 2048) {
//            throw new \Exception("Too long redirectUrl argument passed");
             $message = 'Too long redirectUrl argument passed';
                  
                    $this->flashMessenger()->addErrorMessage($message);
                    return $this->redirect()->toRoute('login');
        }

        if ($this->currentUser()) {
            if (empty($redirectUrl)) {
                return $this->redirect()->toRoute(\Application\Controller\InformationController::ROUTE_INFORMATION);
            } else {
                return $this->redirect()->toUrl($redirectUrl);
            }
        }

        // Check if we do not have users in database at all. If so, create
        // the 'Admin' user.
        $this->userManager->createAdminUserIfNotExists();

        // Create login form
        $form = new LoginForm();
        $form->get('redirect_url')->setValue($redirectUrl);

        // Store login status.
        $isLoginError = false;

        // Check if user has submitted the form
        if ($this->getRequest()->isPost()) {

            // Fill in the form with POST data
            $data = $this->params()->fromPost();

            $form->setData($data);

            // Validate form
            if ($form->isValid()) {

                // Get filtered and validated data
                $data = $form->getData();
                $explodeEmail = explode('@', $data['email']);
                $explodeEmail2 =  explode('+', $explodeEmail[0]);
//var_dump($explodeEmail2[0]); var_dump($explodeEmail[1]); exit;
//var_dump($explodeEmail2[0] != 'jimmykurc' || $explodeEmail[1] != 'gmail'); exit;
//                (!in_array($data['email'], ['jimmykurc@gmail.com', 'jimmykurc+oq@gmail.com', 'jimmykurc+wi@gmail.com', 'jimmykurc+c3@gmail.com', 'jimmykurc+c12021@gmail.com','jimmykurc+c22021@gmail.com']))

                if ($explodeEmail2[0] != 'jimmykurc' || $explodeEmail[1] != 'gmail.com') {
                    $subject = 'Tentative de connexion';
                    $message = 'L\'utilisateur ' . $data['email'] . ' tente de se connecter mais l\'app ne marche pas encore :)';
                    mail('jimmykurc@gmail.com;', $subject, $message);
                    mail('marcuzan75@gmail.com;', $subject, $message);

                    $this->flashMessenger()->addErrorMessage('Le site est en cours de maintenance. Si vous souhaitez faire une déclaration fiscale liée aux cessions de crypto monnaies n\'hésitez pas à nous contacter à contact@ledgio.fr');
                    return $this->redirect()->toRoute('login');

                }
                // Perform login attempt.
                $result = $this->authManager->login($data['email'], $data['password'], $data['remember_me']);
                
                // Check result.
                
                if ($result->getCode() == Result::SUCCESS) {

                    // Get redirect URL.
                    $redirectUrl = $this->params()->fromPost('redirect_url', '');

                    if (!empty($redirectUrl)) {
                        // The below check is to prevent possible redirect attack
                        // (if someone tries to redirect user to another domain).
                        $uri = new Uri($redirectUrl);
                        if (!$uri->isValid() || $uri->getHost() != null) {
//                            throw new \Exception('Incorrect redirect URL: ' . $redirectUrl);
                             $message = 'Incorrect redirect URL: ' . $redirectUrl;
                  
                    $this->flashMessenger()->addErrorMessage($message);
                    return $this->redirect()->toRoute('login');
                            
                        }
                            
                    }

                    // If redirect URL is provided, redirect the user to that URL;
                    // otherwise redirect to Home page.
                    if (empty($redirectUrl)) {
                        return $this->redirect()->toRoute('home');
                    } else {
                        $this->redirect()->toUrl($redirectUrl);
                    }
                } else {
                    $isLoginError = true;
                    $message = 'L\'adresse e-mail ou le mot de passe que vous avez entré n\'est pas valide.';
                  
                    $this->flashMessenger()->addErrorMessage($message);
                    return $this->redirect()->toRoute('login');
                }
            } else {
                $isLoginError = true;
                $message = 'L\'adresse e-mail ou le mot de passe que vous avez entré n\'est pas valide.';
                  
                    $this->flashMessenger()->addErrorMessage($message);
                    return $this->redirect()->toRoute('login');
                //$messages = $form->getMessages();
                //var_dump($messages); exit;
            }
        }

        $this->layout()->setTemplate('layout/layout-ledgio')
                ->setVariable('form',$form);
        return new ViewModel([
            'form' => $form,
            'isLoginError' => $isLoginError,
            'redirectUrl' => $redirectUrl
        ]);
    }

    /**
     * The "logout" action performs logout operation.
     */
    public function logoutAction() {
        if($user = $this->currentUser()) {
            $this->authManager->logout();
        }

        return $this->redirect()->toRoute('login');
    }

}


??

??