Skip to content

rlp/opauth

 
 

Repository files navigation

CakePHP plugin for Opauth

CakePHP 2.x plugin for Opauth.

Opauth is a multi-provider authentication framework.

Requirements

CakePHP v2.x
Opauth >= v0.2 (submoduled with this package)

Tutorial & sample app

Check out CakePHP bakery for tutorial and the sample branch for a quick sample app.

How to use

  1. Install this plugin for your CakePHP app.
    Assuming APP is the directory where your CakePHP app resides, it's usually app/ from the base of CakePHP.

    cd APP/Plugin
    git clone git://github.com/uzyn/cakephp-opauth.git Opauth
  2. Download Opauth library as a submodule.

    git submodule init
    git submodule update
  3. Add this line to the bottom of your app's Config/bootstrap.php:

    <?php
    CakePlugin::load('Opauth', array('routes' => true, 'bootstrap' => true));

    Overwrite any Opauth configurations you want after the above line.

  4. Load strategies onto Strategy/ directory.

    Append configuration for strategies at your app's Config/bootstrap.php as follows:

    <?php
    CakePlugin::load('Opauth', array('routes' => true, 'bootstrap' => true));
    
    // Using Facebook strategy as an example
    Configure::write('Opauth.Strategy.Facebook', array(
        'app_id' => 'YOUR FACEBOOK APP ID',
        'app_secret' => 'YOUR FACEBOOK APP SECRET'
    ));
  5. Go to http://path_to_your_cake_app/auth/facebook to authenticate with Facebook, and similarly for other strategies that you have loaded.

  6. After validation, user will be redirected to Router::url('/opauth-complete') with validated auth response data retrievable available at $this->data.

    To route a controller to handle the response, at your app's Config/routes.php, add a connector, for example:

    <?php
    Router::connect(
        '/opauth-complete/*', 
        array('controller' => 'users', 'action' => 'opauth_complete')
    );

    You can then work with the authentication data at, say APP/Controller/UsersController.php as follows:

    <?php // APP/Controller/UsersController.php:
    class UsersController extends AppController {
        public function opauth_complete() {
            debug($this->data);
        }
    }

    Note that this CakePHP Opauth plugin already does auth response validation for you with its results available as a boolean value at $this->data['validated'].

  7. (optional) The submoduled Opauth core library may not be of the latest build, to update to the latest:

    git submodule foreach git pull origin master

Note:

If your CakePHP app does not reside at DocumentRoot (eg. http://localhost), but at a directory below DocumentRoot (eg. http://localhost/your-cake-app),
add this line to your app's APP/Config/bootstrap.php, replacing your-cake-app with your actual path :

<?php // APP/Config/bootstrap.php
Configure::write('Opauth.path', '/your-cake-app/auth/');

======= Opauth

Opauth is a multi-provider authentication framework for PHP, inspired by OmniAuth for Ruby.

Opauth enables PHP applications to do user authentication with ease.

Try out Opauth for yourself at http://opauth.org

Build Status

What is Opauth?

Opauth provides a standardized method for PHP applications to interface with authentication providers.

Opauth as a framework provides a set of API that allows developers to create strategies that work in a predictable manner across PHP frameworks and applications.

Opauth works well with other PHP applications & frameworks. It is currently supported on:

If your PHP framework of choice is not yet listed, you can still use Opauth like you would a normal PHP component (class).

Quick start

Guide on how to run the bundled example.

  1. Set DocumentRoot of your web server to example/.
    (Opauth can be instantiated in your own PHP app, but we will leave that out of this quick start guide)

  2. Configure Opauth.

    First, make a copy of opauth config's file by copying or renaming
    opauth.conf.php.default to opauth.conf.php.

    Open up opauth.conf.php and make the necessary changes.

  3. Install some Opauth strategies.
    Place the strategy files in lib/Opauth/Strategy/.

    For this example, we recommend that you start with Opauth-Facebook:

    i. Download the strategy files and place them at lib/Opauth/Strategy/Facebook/.

    ii. Follow the steps at Opauth-Facebook's README to set up your Faceobok app.

    iii. Add the following at opauth.conf.php under Strategy as such:

<?php
'Strategy' => array(  
    // Define strategies here.

    'Facebook' => array(
        'app_id' => 'YOUR APP ID',
        'app_secret' => 'YOUR APP SECRET'
    ),
);

Finally, send user to http://localhost/facebook to authenticate.

Check out the wiki for more in-depth details, especially on how to use Opauth with your own PHP application.

Available strategies

A strategy is a set of instructions that interfaces with respective authentication providers and relays it back to Opauth.

Provider-specific:

Strategy Maintained by
Facebook   Facebook uzyn
Google   Google uzyn
Instagram   Instagram muhdazrain
LinkedIn   LinkedIn uzyn
mixi   mixi ritou
OpenID   OpenID uzyn
Twitter   Twitter uzyn

Generic strategy: OAuth

See wiki's list of strategies for an updated list of Opauth strategies or to make requests. Also, refer to strategy contribution guide if you would like to contribute a strategy.

Requirements

PHP 5 (>= 5.2)

Contribute

Opauth needs your contributions, especially the following:

  • More strategies
    Refer to wiki for contribution guide and inform us when your work is ready.

  • Plugins for more PHP frameworks and CMSes
    eg. Symfony, Laravel, WordPress, Drupal, etc.

  • Guides & tutorials
    On how to implement Opauth on CakePHP app, etc.

  • Unit testing
    Coverage is only average at the moment.

Issues & questions

Used this plugin in your CakePHP project? Let us know!

Changelog

###v0.4.0 (10 June 2012)

  • mapProfile() and clientGet() for OpauthStrategy class.

###v0.3.0 (30 May 2012)

  • Some unit testing
  • More consistent naming of Strategy's internal properties
  • Smarter loading of strategy, able to make a few guesses on where the class file might be at.

###v0.2.0 (23 May 2012)

  • Opauth is now Composer compatible and listed on Packagist
    • Opauth now supports autoloaders
    • If a strategy is not autoloaded, Opauth falls back and searches for it at strategy_dir defined in config.
  • Class name for strategy Foo should now be FooStrategy instead of Foo.
    • This is to reduce the likelihood of class name collision due to Opauth not requiring the use of namespace.
    • v0.1.0-type class name, ie. Foo, still works, but is now deprecated.

###v0.1.0 (22 May 2012)

  • Initial release

License

The MIT License
Copyright © 2012 U-Zyn Chua (http://uzyn.com)

Footnote

U-Zyn Chua is a Principal Consultant at gladlyCode, a premier PHP web development firm.
If you need consultation in web technologies and services, feel free to talk to us.

About

Multi-provider authentication framework for PHP

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • PHP 100.0%