Current path: home/webdevt/cryptoimpot.fr/module/User/src/Controller/
?? Go up: /home/webdevt/cryptoimpot.fr/module/User/src
<?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');
}
}