Add new method to flush session variables
This commit is contained in:
parent
9bd7985ba4
commit
d0e809a32c
|
|
@ -71,7 +71,7 @@ class AuthenticationManager extends Base
|
|||
if ($this->userSession->isLogged() ) {
|
||||
foreach ($this->filterProviders('SessionCheckProviderInterface') as $provider) {
|
||||
if (! $provider->isValidSession()) {
|
||||
unset($this->sessionStorage->user);
|
||||
$this->sessionStorage->flush();
|
||||
$this->preAuthentication();
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,6 +61,21 @@ class SessionStorage
|
|||
return $session;
|
||||
}
|
||||
|
||||
/**
|
||||
* Flush session data
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
public function flush()
|
||||
{
|
||||
$session = get_object_vars($this);
|
||||
unset($session['storage']);
|
||||
|
||||
foreach (array_keys($session) as $property) {
|
||||
unset($this->$property);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Copy class properties to external storage
|
||||
*
|
||||
|
|
|
|||
|
|
@ -35,4 +35,26 @@ class SessionStorageTest extends Base
|
|||
$storage = null;
|
||||
$this->assertEquals(array('something' => array('a' => 'c'), 'd' => 'e'), $session);
|
||||
}
|
||||
|
||||
public function testFlush()
|
||||
{
|
||||
$session = array('d' => 'e');
|
||||
|
||||
$storage = new SessionStorage();
|
||||
$storage->setStorage($session);
|
||||
$storage->something = array('a' => 'b');
|
||||
|
||||
$this->assertEquals(array('a' => 'b'), $storage->something);
|
||||
$this->assertEquals('e', $storage->d);
|
||||
|
||||
$storage->flush();
|
||||
|
||||
$this->assertFalse(isset($storage->d));
|
||||
$this->assertFalse(isset($storage->something));
|
||||
|
||||
$storage->foo = 'bar';
|
||||
|
||||
$storage = null;
|
||||
$this->assertEquals(array('foo' => 'bar'), $session);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue