/oauth2-server-httpfoundation-bridge

Integrate HttpFoundation into your oauth2-server library

Primary LanguagePHP

oauth2-server-httpfoundation-bridge

A bridge to HttpFoundation for oauth2-server-php.

oauth2-server-httpfoundation-bridge is a wrapper for oauth2-server-php which returns HttpFoundation\Response instead of OAuth2_Response, and uses HttpFoundation\Request instead of OAuth2_Request. If you are integrating oauth2 into a Silex, symfony, or Laravel 4 app, (or any app using HttpFoundation), this will make your application much cleaner

Creating the Server

Creating the server is no different from before, except that you use the OAuth2\HttpFoundationBridge\Server class instead of OAuth2_Server:

$server = new OAuth2\HttpFoundationBridge\Server($app['oauth_storage']);
$server->addGrantType(new OAuth2_GrantType_AuthorizationCode($app['oauth_storage']));
...

Now, when you call any of the handle*Request methods, or call getResponse, the object returned will be an instance of Symfony\Component\HttpFoundation\Response:

if (!$token = $server->grantAccessToken($request)) {
    $response = $server->getResponse();
    if ($response->isSuccessful()) {
        // isSuccessful is unique to HttpFoundation
    }
}

Creating the request

Creating the response object is the same as before, except now you use the OAuth2\HttpFoundationBridge\Request class:

$request = OAuth2\HttpFoundationBridge\Request::createFromGlobals();
$app->run($request);

The Request object is now compatible with both HttpFoundation and oauth2-server-php

// getBaseUrl is unique to HttpFoundation
$baseUrl = $request->getBaseUrl();

// call oauth server
$server->grantAccessToken($request);

If the HttpFoundation request already exists, you can use the static createFromRequest function to build the OAuth2\HttpFoundationBridge\Request instance:

use OAuth2\HttpFoundationBridge\Request as BridgeRequest;

// in your controller layer, the $request object is passed in
public function execute(Request $request)
{
    $bridgeRequest = BridgeRequest::createFromRequest($request);
    $server->grantAccessToken($request);
}

Contact

Please contact Brent Shaffer (bshafs gmail com) for more information