Julio Montoya 5f7d19f3e7 Updating vendors 11 lat temu
..
example 5f7d19f3e7 Updating vendors 11 lat temu
src ea18ee1495 Updating vendors 11 lat temu
.gitignore 5f7d19f3e7 Updating vendors 11 lat temu
LICENSE 28ea16582a Updating vendors 11 lat temu
README.md ea18ee1495 Updating vendors 11 lat temu
composer.json b62ec098a0 Updating vendors 11 lat temu
composer.lock b62ec098a0 Updating vendors 11 lat temu

README.md

Usage

Simple, event driven silex extension

    // Configure opauth
    $app['opauth'] = array(
      'login' => '/auth',
      'callback' => '/auth/callback',
      'config' => array(
        'security_salt' => '...your salt...',
        'Strategy' => array(
            'Facebook' => array(
               'app_id' => '...',
               'app_secret' => '...'
             ),
        )
      )
    );

    // Enable extension
    $app->register(new OpauthExtension());

    // Listen for events
    $app->on(OpauthExtension::EVENT_ERROR, function($e) {
        $this->log->error('Auth error: ' . $e['message'], ['response' => $e->getSubject()]);
        $e->setArgument('result', $this->redirect('/'));
    });

    $app->on(OpauthExtension::EVENT_SUCCESS, function($e) {
        $response = $e->getSubject();

        /*
           find/create a user, oauth response is in $response and it's already validated!
           store the user in the session
        */

        $e->setArgument('result', $this->redirect('/'));
    });

Advanced, symfony security listener+provider

Note, that you can use it in symfony2 projects too!

To login using opauth use /login/PROVIDER, or use opauth_default_login route with provider parameter.


    $app->register(new OpauthSilexProvider());
    $app->register(new SecurityServiceProvider(), array(
        'security.firewalls' => array(
            'default' => array(
                'pattern' => '^/.*',
                'opauth' => array(
                    // 'check_path' => '/login/opauth', //default
                    'opauth' => [
                        // 'path' => '/login', //default
                        'security_salt' => '...your salt...',
                        'Strategy' => [
                            // your opauth strategies go here
                        ]
                    ]
                ),
                'anonymous' => true,
            ),
        )
    );

By default, users will be looked up by username "provider:uid".

You should extend your user provider to handle OPauth results correctly by implementing OpauthUserProviderInterface.