diff --git a/laravel/auth/drivers/driver.php b/laravel/auth/drivers/driver.php index 9cd9b376..b60d84e0 100644 --- a/laravel/auth/drivers/driver.php +++ b/laravel/auth/drivers/driver.php @@ -3,6 +3,7 @@ use Laravel\Str; use Laravel\Cookie; use Laravel\Config; +use Laravel\Event; use Laravel\Session; use Laravel\Crypter; @@ -112,6 +113,8 @@ public function login($token, $remember = false) if ($remember) $this->remember($token); + Event::fire('laravel.auth: login'); + return true; } @@ -128,6 +131,8 @@ public function logout() Session::forget($this->token()); + Event::fire('laravel.auth: logout'); + $this->token = null; } diff --git a/laravel/tests/cases/auth.test.php b/laravel/tests/cases/auth.test.php index 3be1c1e5..cce20fc9 100644 --- a/laravel/tests/cases/auth.test.php +++ b/laravel/tests/cases/auth.test.php @@ -17,6 +17,9 @@ class AuthTest extends PHPUnit_Framework_TestCase { public function setUp() { $_SERVER['auth.login.stub'] = null; + $_SERVER['test.user.login'] = null; + $_SERVER['test.user.logout'] = null; + Cookie::$jar = array(); Config::$items = array(); Auth::driver()->user = null; @@ -30,6 +33,9 @@ public function setUp() public function tearDown() { $_SERVER['auth.login.stub'] = null; + $_SERVER['test.user.login'] = null; + $_SERVER['test.user.logout'] = null; + Cookie::$jar = array(); Config::$items = array(); Auth::driver()->user = null; @@ -300,6 +306,37 @@ public function testLogoutMethodLogsOutUser() $this->assertTrue(Cookie::$jar['laravel_auth_drivers_fluent_remember']['expiration'] < time()); } + /** + * Test `laravel.auth: login` and `laravel.auth: logout` is called properly + * + * @group laravel + */ + public function testAuthEventIsCalledProperly() + { + Session::$instance = new Payload($this->getMock('Laravel\\Session\\Drivers\\Driver')); + + Event::listen('laravel.auth: login', function () + { + $_SERVER['test.user.login'] = 'foo'; + }); + + Event::listen('laravel.auth: logout', function () + { + $_SERVER['test.user.logout'] = 'foo'; + }); + + $this->assertNull($_SERVER['test.user.login']); + $this->assertNull($_SERVER['test.user.logout']); + + Auth::login(1, true); + + $this->assertEquals('foo', $_SERVER['test.user.login']); + + Auth::logout(); + + $this->assertEquals('foo', $_SERVER['test.user.logout']); + } + } class AuthUserReturnsNull extends Laravel\Auth\Drivers\Driver {