Giter VIP home page Giter VIP logo

loid's Introduction

loid

Implements LightOpenID class support into Yii Framework

This extension based on LightOpenID class. ##Intro An PHP 5 library for easy openid authentication. Works only as a consumer. more…

Features:

  • Easy to use. (you can code a functional client in less than ten lines of code)
  • Depends only on curl
  • Supports both OpenID 1.1 and 2.0
  • Supports Yadis discovery
  • Supports only stateless/dumb protocol
  • Works with PHP >= 5
  • Generates no errors with error_reporting(E_ALL | E_STRICT)

##About extension

  • This extension is directory independent, you can use it any desired directory without rewritting import() instructions.
  • Extension is fully updatable. You can rewrite LightOpenID class with fresh version with any newer LightOpenID version without any corrections in extension code.

##Requirements

CURL.

##Installation

First you must install extension to your project:
You can do it in 2 ways:

Way 1: in your project config.php in the components section, add the following:

'loid' => array(
               //alias to dir, where you unpacked extension
    'class' => 'application.extensions.lightopenid.loid',
),

Way 2: in your controller code:

Yii::app()->setComponents(array('loid'=>array('class'=>'application.extensions.lightopenid.loid')));
),

##Usage

Simple usage:

$loid = Yii::app()->loid->load();
if (!empty($_GET['openid_mode'])) {
    if ($_GET['openid_mode'] == 'cancel') {
        $err = Yii::t('core', 'Authorization cancelled');
    } else {
        try {
            echo $loid->validate() ? 'Logged in.' : 'Failed';
        } catch (Exception $e) {
            $err = Yii::t('core', $e->getMessage());
        }
    }
    if(!empty($err)) echo $err;
} else {
    $loid->identity = "http://my.openid.identifier"; //Setting identifier
    $loid->required = array('namePerson/friendly', 'contact/email'); //Try to get info from openid provider
    $loid->realm     = (!empty($_SERVER['HTTPS']) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST']; 
    $loid->returnUrl = $loid->realm . $_SERVER['REQUEST_URI']; //getting return URL
    if (empty($err)) {
        try {
            $url = $loid->authUrl();
            $this->redirect($url);
        } catch (Exception $e) {
            $err = Yii::t('core', $e->getMessage());
        }
    }
}

##Configuration: You can set loid configuration by 2 ways:

01. After load configuration:

$loid = Yii::app()->loid->load();
$loid->identity = "http://my.openid.identifier"; //Setting identifier
$loid->required = array('namePerson/friendly', 'contact/email'); //Try to get info from openid provider

02. Onload configuration:

$config = array('identity'=>'http://my.openid.identifier','required'=>array('namePerson/friendly', 'contact/email'));
$loid = Yii::app()->loid->load($config);

##LightOpenid usage ReadMe:

/**
 * This class provides a simple interface for OpenID (1.1 and 2.0) authentication.
 * Supports Yadis discovery.
 * The authentication process is stateless/dumb.
 *
 * Usage:
 * Sign-on with OpenID is a two step process:
 * Step one is authentication with the provider:
 * <code>
 * $openid = new LightOpenID;
 * $openid->identity = 'ID supplied by user';
 * header('Location: ' . $openid->authUrl());
 * </code>
 * The provider then sends various parameters via GET, one of them is openid_mode.
 * Step two is verification:
 * <code>
 * if ($this->data['openid_mode']) {
 *     $openid = new LightOpenID;
 *     echo $openid->validate() ? 'Logged in.' : 'Failed';
 * }
 * </code>
 *
 * Optionally, you can set $returnUrl and $realm (or $trustRoot, which is an alias).
 * The default values for those are:
 * $openid->realm     = (!empty($_SERVER['HTTPS']) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'];
 * $openid->returnUrl = $openid->realm . $_SERVER['REQUEST_URI'];
 * If you don't know their meaning, refer to any openid tutorial, or specification. Or just guess.
 *
 * AX and SREG extensions are supported.
 * To use them, specify $openid->required and/or $openid->optional before calling $openid->authUrl().
 * These are arrays, with values being AX schema paths (the 'path' part of the URL).
 * For example:
 *   $openid->required = array('namePerson/friendly', 'contact/email');
 *   $openid->optional = array('namePerson/first');
 * If the server supports only SREG or OpenID 1.1, these are automaticaly
 * mapped to SREG names, so that user doesn't have to know anything about the server.
 *
 * To get the values, use $openid->getAttributes().
 *
 *
 * The library requires PHP >= 5.1.2 with curl or http/https stream wrappers enabled.
 * @author Mewp
 * @copyright Copyright (c) 2010, Mewp
 * @license http://www.opensource.org/licenses/mit-license.php MIT
 */

##i18n Here are i18n pairs to Yii::t() instructions:

'No servers found!' => 'Не найден сервер авторизации. (No servers found!)',
'Invalid request.'=> 'Неверный запрос. (Invalid request.)',
'No identity supplied.'=>'Нет поддержки идентификатора. (No identity supplied.)',
'Endless redirection!'=>'Бесконечный редирект! (Endless redirection!)',

##Resources

loid's People

Contributors

goshasaveiko avatar lispad avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.