FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Xorcode/phalcon-oauth2: Phalcon wrapper for Oauth2 thephpleague/oauth2-server · GitHub

 
 

Latest commit

 

History

16 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Phalcon-Oauth2

Phalcon wrapper for Oauth2 https://github.com/thephpleague/oauth2-server

Install

curl -sS getcomposer.org/installer | php
php composer.phar require "league/oauth2-server":"3.*" -vvv

Server Example

# add composer autoload on public/index.php, loader.php or wherever you want
require __DIR__ "/../vendor/autoload.php"

# Config DB

return new \Phalcon\Config([
    'database'    => [
        'oauth' => [
            'adapter'  => 'Mysql',
            'host'     => 'localhost',
            'port'     => 3306,
            'username' => 'root',
            'password' => 'pwd',
            'dbname'   => 'oauth2',
        ],
        'app'   => [
            'adapter'  => 'Mysql',
            'host'     => 'localhost',
            'port'     => 3306,
            'username' => 'root',
            'password' => 'pwd',
            'dbname'   => 'project',
        ],
    ],
    # ...
]);

# Register The Lib to the loader
$loader = new \Phalcon\Loader();
$loader->registerNamespaces([
    'Sum' => '/Path/To/Lib/Dir/',
    # ...
])->register();

# set as service
$app->setService('oauth', function() use ($config) {
   $oauthdb = new Phalcon\Db\Adapter\Pdo\Mysql($config->database->oauth->toArray());

    $server = new \League\OAuth2\Server\Authorization(
        new \Sum\Oauth2\Server\Storage\Pdo\Mysql\Client($oauthdb),
        new \Sum\Oauth2\Server\Storage\Pdo\Mysql\Session($oauthdb),
        new \Sum\Oauth2\Server\Storage\Pdo\Mysql\Scope($oauthdb)
    );

    # Not required as it called directly from original code
    # $request = new \League\OAuth2\Server\Util\Request();
    
    # add these 2 lines code if you want to use my own Request otherwise comment it
    $request = new \Sum\Oauth2\Server\Storage\Pdo\Mysql\Request(); 
    $server->setRequest($request);

    $server->setAccessTokenTTL(86400);
    $server->addGrantType(new League\OAuth2\Server\Grant\ClientCredentials());
    return $server;
});

# should be post, but it is only test 
$app->get('/access', function () use ($app) {
	try {
	    $params = $app->oauth->getParam(array('client_id', 'client_secret'));
	    echo json_encode(
	    	$app->oauth
	    		->getGrantType('client_credentials')
	    		->completeFlow($params)
	    );
	} catch (\League\OAuth2\Server\Exception\ClientException $e) {
	    echo $e->getTraceAsString();
	} catch (\Exception $e) {
	    echo $e->getTraceAsString();
	}
});

Test

curl "localhost/phalcon/public/access?client_id=what&client_secret=ever"

Response

{
	access_token: "KKiGP5YURoR41k2iYy82Dp4rFyOxrhJUp9KcdjuK",
	token_type: "Bearer",
	expires: "1397626655",
	expires_in: 86400
}

Resource Example

$di['resource'] = function () use ($config) {
    $oauthdb = new DbAdapter(
        $config->database->oauth->toArray()
    );
    $resource = new League\OAuth2\Server\Resource(
        new \Sum\Oauth2\Server\Storage\Pdo\Mysql\Session($oauthdb)
    );
    ##only exist on my develop fork
    #$resource->setMsg([
    #    'invalidToken' => 'Token tidak benar',
    #    'missingToken' => 'Token tidak ditemukan'
    #]);
    $resource->setRequest(new \Sum\Oauth2\Server\Storage\Pdo\Mysql\Request());

    return $resource;
};

$app->get('/bill', function () use ($app) {
    try {
        $app->resource->setTokenKey('token');
        $app->resource->isValid();
        return $app->response
            ->setContentType('application/json')
            ->setJsonContent([
	            'error'   => False,
	            'status'  => "OK",
	            'message' => "Welcome"
        ]);
    } catch (League\OAuth2\Server\Exception\InvalidAccessTokenException $e) {
        $body['meta'] = [
            'error'   => TRUE,
            'status'  => 403,
            'message' => $e->getMessage()
        ];
        return $app->response
            ->setStatusCode(403, 'Forbidden')
            ->setContentType('application/json')
            ->setJsonContent([
	            'error'   => TRUE,
	            'status'  => 403,
	            'message' => $e->getMessage()
		]);
    }
});

Resource Test

curl "localhost/phalcon/public/bill?token=KKiGP5YURoR41k2iYy82Dp4rFyOxrhJUp9KcdjuK"

Support

Bugs and feature request are tracked on GitHub

License

This package is released under the MIT License. See the bundled LICENSE file for details.

Credits

This code is principally developed and maintained by Sumeko.

Special thanks to:

About

Phalcon wrapper for Oauth2 thephpleague/oauth2-server

Resources

Stars

10 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages


Back | FazBrowse Home | New Git URL