Solved user session bug

This commit is contained in:
Kevin Frantz 2018-07-15 13:42:59 +02:00
parent 7470686c56
commit 228c261db1
2 changed files with 35 additions and 3 deletions

View File

@ -3,6 +3,9 @@ namespace core;
use entity\order\Order; use entity\order\Order;
use entity\user\UserInterface; use entity\user\UserInterface;
use repository\user\User as UserRepository;
use repository\user\UserInterface as UserRepositoryInterface;
use entity\user\User;
/** /**
* *
@ -46,8 +49,14 @@ final class Core implements CoreInterface
*/ */
private $basket; private $basket;
/**
* @var UserRepositoryInterface
*/
private $userRepository;
public function __construct() public function __construct()
{ {
session_start();
$this->initTwig(); $this->initTwig();
$this->initDatabase(); $this->initDatabase();
$this->initUser(); $this->initUser();
@ -70,11 +79,19 @@ final class Core implements CoreInterface
*/ */
private function initUser(): void private function initUser(): void
{ {
$this->userRepository = new UserRepository($this);
if($_SESSION['user']){ if($_SESSION['user']){
$this->user = $_SESSION['user']; $this->user = $this->getUserBySession();
} }
} }
private function getUserBySession():UserInterface{
$user = new User();
$user->setPasswordHash($_SESSION['user']['hash']);
$user->setEmail($_SESSION['user']['email']);
return $this->userRepository->getUserByMailAndHash($user);
}
private function initTwig(): void private function initTwig(): void
{ {
$loader = new \Twig_Loader_Filesystem(__DIR__ . '/../template'); $loader = new \Twig_Loader_Filesystem(__DIR__ . '/../template');
@ -101,9 +118,21 @@ final class Core implements CoreInterface
return $this->user; return $this->user;
} }
private function setUserSession():void{
if($this->user){
$_SESSION['user'] = [
'email'=>$this->user->getEmail(),
'hash'=>$this->user->getPasswordHash(),
];
}else{
unset($_SESSION['user']);
}
}
public function setUser(?UserInterface $user = null): void public function setUser(?UserInterface $user = null): void
{ {
$_SESSION['user'] = $this->user = $user; $this->user = $user;
$this->setUserSession();
} }
/** /**

View File

@ -26,6 +26,9 @@ class CoreTest extends TestCase
protected function setUp():void{ protected function setUp():void{
$this->core = new Core(); $this->core = new Core();
$this->user = new User(); $this->user = new User();
$this->user->setId(1);
$this->user->setEmail('test@mail.test');
$this->user->setPasswordHashByPassword('passwort:)');
$this->core->setUser($this->user); $this->core->setUser($this->user);
} }
@ -42,7 +45,7 @@ class CoreTest extends TestCase
} }
public function testSession():void{ public function testSession():void{
$this->assertEquals($this->core->getUser(), $_SESSION['user']); $this->assertEquals($this->core->getUser()->getPasswordHash(), $_SESSION['user']['hash']);
} }
} }