|
@@ -10,6 +10,7 @@ use Symfony\Bundle\FrameworkBundle\Client;
|
|
|
|
|
|
use Doctrine\Common\Collections\ArrayCollection;
|
|
|
use ReflectionClass;
|
|
|
+use Symfony\Component\Security\Core\User\User;
|
|
|
|
|
|
class WebTestCaseBase extends WebTestCase
|
|
|
{
|
|
@@ -139,6 +140,9 @@ class WebTestCaseBase extends WebTestCase
|
|
|
// actualizo las tenencias asociadas al usuario
|
|
|
$user->setTenancies($arrayTenancies);
|
|
|
$em->flush();
|
|
|
+ } else {
|
|
|
+ // seteo las tenencias como array en el usuario
|
|
|
+ $this->get('security.token_storage')->getToken()->getUser()->setTenancies($tenancies);
|
|
|
}
|
|
|
$service_tenancy->setTenancy($current);
|
|
|
}
|
|
@@ -159,59 +163,90 @@ class WebTestCaseBase extends WebTestCase
|
|
|
if ($em != null) {
|
|
|
// FOS\UserBundle\Model\UserManager
|
|
|
// FOS\UserBundle\Doctrine\UserManager
|
|
|
- $userManager = $this->get('fos_user.user_manager');
|
|
|
- if ($userManager != null) {
|
|
|
- try {
|
|
|
- $user = $userManager->findUserBy(array('id' => $this->idUser));
|
|
|
- } catch (\Throwable $t) {
|
|
|
- $user = null;
|
|
|
- }
|
|
|
- if (!$user) {
|
|
|
- // el usuario no existe por lo tanto lo creo. Deberia ver el tema de las tenencias
|
|
|
- // no tengo la oportunidad de probarlo
|
|
|
- $user = $userManager->createUser();
|
|
|
- $cargo = false;
|
|
|
+ if ($this->isModuleBase()) {
|
|
|
+ $userManager = $this->get('fos_user.user_manager');
|
|
|
+ if ($userManager != null) {
|
|
|
try {
|
|
|
- $em = $this->getDoctrineManager();
|
|
|
- $userDB = $em->getRepository("BaseUserBundle:User")->findOneBy(array('id' => $this->idUser));
|
|
|
- if ($userDB) {
|
|
|
- $cargo = true;
|
|
|
- $user->setEmail($userDB->email);
|
|
|
+ $user = $userManager->findUserBy(array('id' => $this->idUser));
|
|
|
+ } catch (\Throwable $t) {
|
|
|
+ $user = null;
|
|
|
+ }
|
|
|
+ if (!$user) {
|
|
|
+ // el usuario no existe por lo tanto lo creo. Deberia ver el tema de las tenencias
|
|
|
+ // no tengo la oportunidad de probarlo
|
|
|
+ $user = $userManager->createUser();
|
|
|
+ $cargo = false;
|
|
|
+ try {
|
|
|
+ $em = $this->getDoctrineManager();
|
|
|
+ $userDB = $em->getRepository("BaseUserBundle:User")->findOneBy(array('id' => $this->idUser));
|
|
|
+ if ($userDB) {
|
|
|
+ $cargo = true;
|
|
|
+ $user->setEmail($userDB->email);
|
|
|
+ $user->Id = $idUser;
|
|
|
+ $user->setUsername($userDB->username);
|
|
|
+ $user->setPlainPassword($userDB->plainPassword);
|
|
|
+ $user->setEnabled(true);
|
|
|
+ $user->setRoles($userDB->getRoles());
|
|
|
+ // este comando ademas se setear los datos, los persiste en la base de datos.
|
|
|
+ $userManager->updateUser($user);
|
|
|
+ }
|
|
|
+ } catch (\Throwable $t) {
|
|
|
+ }
|
|
|
+ if (!$cargo) {
|
|
|
+ // no se cargo el usuario por algun error. Lo hago manual.
|
|
|
+ $user->setEmail("pepe@pepe.com");
|
|
|
$user->Id = $idUser;
|
|
|
- $user->setUsername($userDB->username);
|
|
|
- $user->setPlainPassword($userDB->plainPassword);
|
|
|
+ $user->setUsername('admin');
|
|
|
+ $user->setPlainPassword('adminpass');
|
|
|
$user->setEnabled(true);
|
|
|
- $user->setRoles($userDB->getRoles());
|
|
|
- // este comando ademas se setear los datos, los persiste en la base de datos.
|
|
|
- $userManager->updateUser($user);
|
|
|
+ $user->setRoles(array("ROLE_USER"));
|
|
|
+ $userManager->updateCanonicalFields($user);
|
|
|
+ $userManager->updatePassword($user);
|
|
|
}
|
|
|
- } catch (\Throwable $t) {
|
|
|
}
|
|
|
- if (!$cargo) {
|
|
|
- // no se cargo el usuario por algun error. Lo hago manual.
|
|
|
- $user->setEmail("pepe@pepe.com");
|
|
|
- $user->Id = $idUser;
|
|
|
- $user->setUsername('admin');
|
|
|
- $user->setPlainPassword('adminpass');
|
|
|
- $user->setEnabled(true);
|
|
|
- $user->setRoles(array("ROLE_USER"));
|
|
|
- $userManager->updateCanonicalFields($user);
|
|
|
- $userManager->updatePassword($user);
|
|
|
+ // contiene el nombre de firewall a utilizar
|
|
|
+ $firewall = 'main';
|
|
|
+ // busco el token en el security
|
|
|
+ $tokenStorage = $this->get('security.token_storage');
|
|
|
+ if ($tokenStorage != null) {
|
|
|
+ $token = null;
|
|
|
+ if (!$tokenStorage->getToken()) {
|
|
|
+ // no tengo el token, entonces lo creo
|
|
|
+ $token = new UsernamePasswordToken($user, null, $firewall, array('ROLE_SUPER_ADMIN'));
|
|
|
+ } else {
|
|
|
+ // utilizo el token que yo esta creado
|
|
|
+ $token = $tokenStorage->getToken();
|
|
|
+ }
|
|
|
+ // seteo en la session el firewall que voy a utilizar y el token
|
|
|
+ $session->set('_security_' . $firewall, serialize($token));
|
|
|
+ $session->save();
|
|
|
+ // creo una cookie con los datos de la session.
|
|
|
+ $cookie = new Cookie($session->getName(), $session->getId());
|
|
|
+ $this->getClient()->getCookieJar()->set($cookie);
|
|
|
+ // seteo el token en el security.token_storage
|
|
|
+ $tokenStorage->setToken($token);
|
|
|
+ } else {
|
|
|
+ throw new \ErrorException("Error al obtener el token storage.");
|
|
|
}
|
|
|
+ } else {
|
|
|
+ throw new \ErrorException("Error al obtener el fos user manager.");
|
|
|
}
|
|
|
+ } else {
|
|
|
+ // no estoy en el modulo base
|
|
|
+ // creo la clase de esta forma para no utilizar el "use" porque va a traer conflicto en otros modulos
|
|
|
+ $class = "Base\OAuthClientBundle\Security\Core\User\CustomOAuthUser";
|
|
|
+ $user = new $class('admin');
|
|
|
+ // no se cargo el usuario por algun error. Lo hago manual.
|
|
|
+ $user->Id = $idUser;
|
|
|
+ $user->setRoles(array("ROLE_USER"));
|
|
|
// contiene el nombre de firewall a utilizar
|
|
|
$firewall = 'main';
|
|
|
// busco el token en el security
|
|
|
$tokenStorage = $this->get('security.token_storage');
|
|
|
if ($tokenStorage != null) {
|
|
|
$token = null;
|
|
|
- if (!$tokenStorage->getToken()) {
|
|
|
- // no tengo el token, entonces lo creo
|
|
|
- $token = new UsernamePasswordToken($user, null, $firewall, array('ROLE_SUPER_ADMIN'));
|
|
|
- } else {
|
|
|
- // utilizo el token que yo esta creado
|
|
|
- $token = $tokenStorage->getToken();
|
|
|
- }
|
|
|
+ // no tengo el token, entonces lo creo
|
|
|
+ $token = new UsernamePasswordToken($user, null, $firewall, array('ROLE_SUPER_ADMIN'));
|
|
|
// seteo en la session el firewall que voy a utilizar y el token
|
|
|
$session->set('_security_' . $firewall, serialize($token));
|
|
|
$session->save();
|
|
@@ -220,11 +255,7 @@ class WebTestCaseBase extends WebTestCase
|
|
|
$this->getClient()->getCookieJar()->set($cookie);
|
|
|
// seteo el token en el security.token_storage
|
|
|
$tokenStorage->setToken($token);
|
|
|
- } else {
|
|
|
- throw new \ErrorException("Error al obtener el token storage.");
|
|
|
}
|
|
|
- } else {
|
|
|
- throw new \ErrorException("Error al obtener el fos user manager.");
|
|
|
}
|
|
|
} else {
|
|
|
throw new \ErrorException("Error al obtener doctrine.");
|