diff --git a/src/Auth/LaravelAuthProvider.php b/src/Auth/LaravelAuthProvider.php new file mode 100644 index 000000000..fffe3618b --- /dev/null +++ b/src/Auth/LaravelAuthProvider.php @@ -0,0 +1,55 @@ +auth = $auth; + } + + /** + * Check if user is authenticated. + * + * @param \Illuminate\Http\Request $request + * @param \Illuminate\Routing\Route $route + * @return int + */ + public function authenticate(Request $request, Route $route) + { + if($this->auth->check()) + { + return $this->auth->user()->id; + } + + throw new UnauthorizedHttpException('Laravel', 'Not authorized.'); + } + + /** + * Get the providers authorization method. + * + * @return string + */ + public function getAuthorizationMethod() + { + return 'laravel'; + } + +} diff --git a/tests/AuthLaravelProviderTest.php b/tests/AuthLaravelProviderTest.php new file mode 100644 index 000000000..e62227227 --- /dev/null +++ b/tests/AuthLaravelProviderTest.php @@ -0,0 +1,51 @@ +auth = m::mock('Illuminate\Auth\AuthManager'); + } + + public function tearDown() + { + m::close(); + } + + public function testIsAuthenticatedAndReturnsUserId() + { + $this->auth->shouldReceive('check') + ->once() + ->andReturn(true); + + $this->auth->shouldReceive('user') + ->once() + ->andReturn((object) ['id' => 1]); + + + $request = Request::create('foo', 'GET'); + $provider = new LaravelAuthProvider($this->auth); + + $this->assertEquals(1, $provider->authenticate($request, m::mock('Illuminate\Routing\Route'))); + } + + /** + * @expectedException \Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException + */ + public function testIsNotAuthenticatedThrowsException() + { + $request = Request::create('foo', 'GET'); + $provider = new LaravelAuthProvider($this->auth); + + $this->auth->shouldReceive('check') + ->once() + ->andReturn(false); + + $provider->authenticate($request, m::mock('Illuminate\Routing\Route')); + } + +}