Вход Регистрация
Файл: WoWonder 1.2.1/Update Guide/v1.1/Script/assets/import/hybridauth/Hybrid/Provider_Model_OpenID.php
Строк: 234
<?php

/**
 * HybridAuth
 * http://hybridauth.sourceforge.net | http://github.com/hybridauth/hybridauth
 * (c) 2009-2015, HybridAuth authors | http://hybridauth.sourceforge.net/licenses.html
 */

/**
 * To implement an OpenID based service provider, Hybrid_Provider_Model_OpenID
 * can be used to save the hassle of the authentication flow.
 *
 * Each class that inherit from Hybrid_Provider_Model_OAuth2 have only to define
 * the provider identifier : <code>public $openidIdentifier = ""; </code>
 *
 * Hybrid_Provider_Model_OpenID use LightOpenID lib which can be found on
 * Hybrid/thirdparty/OpenID/LightOpenID.php
 */
class Hybrid_Provider_Model_OpenID extends Hybrid_Provider_Model {

    
/**
     * Provider API client
     * @var LightOpenID
     */
    
public $api null;

    
/**
     * Openid provider identifier
     * @var string
     */
    
public $openidIdentifier "";

    
/**
     * {@inheritdoc}
     */
    
function initialize() {
        if (isset(
$this->params["openid_identifier"])) {
            
$this->openidIdentifier $this->params["openid_identifier"];
        }

        
// include LightOpenID lib
        
require_once Hybrid_Auth::$config["path_libraries"] . "OpenID/LightOpenID.php";

        
// An error was occurring when proxy wasn't set. Not sure where proxy was meant to be set/initialized.
        
Hybrid_Auth::$config['proxy'] = isset(Hybrid_Auth::$config['proxy']) ? Hybrid_Auth::$config['proxy'] : '';

        
$hostPort parse_url(Hybrid_Auth::$config["base_url"], PHP_URL_PORT);
        
$hostUrl parse_url(Hybrid_Auth::$config["base_url"], PHP_URL_HOST);

        
// Check for port on url
        
if ($hostPort) {
            
$hostUrl .= ':' $hostPort;
        }

        
$this->api = new LightOpenID($hostUrlHybrid_Auth::$config["proxy"]);
    }

    
/**
     * {@inheritdoc}
     */
    
function loginBegin() {
        if (empty(
$this->openidIdentifier)) {
            throw new 
Exception("OpenID adapter require the identity provider identifier 'openid_identifier' as an extra parameter."4);
        }

        
$this->api->identity $this->openidIdentifier;
        
$this->api->returnUrl $this->endpoint;
        
$this->api->required = array(
            
'namePerson/first',
            
'namePerson/last',
            
'namePerson/friendly',
            
'namePerson',
            
'contact/email',
            
'birthDate',
            
'birthDate/birthDay',
            
'birthDate/birthMonth',
            
'birthDate/birthYear',
            
'person/gender',
            
'pref/language',
            
'contact/postalCode/home',
            
'contact/city/home',
            
'contact/country/home',
            
'media/image/default',
        );

        
# redirect the user to the provider authentication url
        
Hybrid_Auth::redirect($this->api->authUrl());
    }

    
/**
     * {@inheritdoc}
     */
    
function loginFinish() {
        
# if user don't grant access of their data to your site, halt with an Exception
        
if ($this->api->mode == 'cancel') {
            throw new 
Exception("Authentication failed! User has canceled authentication!"5);
        }

        
# if something goes wrong
        
if (!$this->api->validate()) {
            throw new 
Exception("Authentication failed. Invalid request received!"5);
        }

        
# fetch received user data
        
$response $this->api->getAttributes();

        
# store the user profile
        
$this->user->profile->identifier $this->api->identity;

        
$this->user->profile->firstName = (array_key_exists("namePerson/first"$response)) ? $response["namePerson/first"] : "";
        
$this->user->profile->lastName = (array_key_exists("namePerson/last"$response)) ? $response["namePerson/last"] : "";
        
$this->user->profile->displayName = (array_key_exists("namePerson"$response)) ? $response["namePerson"] : "";
        
$this->user->profile->email = (array_key_exists("contact/email"$response)) ? $response["contact/email"] : "";
        
$this->user->profile->language = (array_key_exists("pref/language"$response)) ? $response["pref/language"] : "";
        
$this->user->profile->country = (array_key_exists("contact/country/home"$response)) ? $response["contact/country/home"] : "";
        
$this->user->profile->zip = (array_key_exists("contact/postalCode/home"$response)) ? $response["contact/postalCode/home"] : "";
        
$this->user->profile->gender = (array_key_exists("person/gender"$response)) ? $response["person/gender"] : "";
        
$this->user->profile->photoURL = (array_key_exists("media/image/default"$response)) ? $response["media/image/default"] : "";

        
$this->user->profile->birthDay = (array_key_exists("birthDate/birthDay"$response)) ? $response["birthDate/birthDay"] : "";
        
$this->user->profile->birthMonth = (array_key_exists("birthDate/birthMonth"$response)) ? $response["birthDate/birthMonth"] : "";
        
$this->user->profile->birthYear = (array_key_exists("birthDate/birthDate"$response)) ? $response["birthDate/birthDate"] : "";

        if (isset(
$response['namePerson/friendly']) && !empty($response['namePerson/friendly']) && !$this->user->profile->displayName) {
            
$this->user->profile->displayName $response["namePerson/friendly"];
        }

        if (isset(
$response['birthDate']) && !empty($response['birthDate']) && !$this->user->profile->birthDay) {
            list( 
$birthday_year$birthday_month$birthday_day ) = $response['birthDate'];

            
$this->user->profile->birthDay = (int) $birthday_day;
            
$this->user->profile->birthMonth = (int) $birthday_month;
            
$this->user->profile->birthYear = (int) $birthday_year;
        }

        if (!
$this->user->profile->displayName) {
            
$this->user->profile->displayName trim($this->user->profile->firstName " " $this->user->profile->lastName);
        }

        if (
$this->user->profile->gender == "f") {
            
$this->user->profile->gender "female";
        }

        if (
$this->user->profile->gender == "m") {
            
$this->user->profile->gender "male";
        }

        
// set user as logged in
        
$this->setUserConnected();

        
// with openid providers we get the user profile only once, so store it
        
Hybrid_Auth::storage()->set("hauth_session.{$this->providerId}.user"$this->user);
    }

    
/**
     * {@inheritdoc}
     */
    
function getUserProfile() {
        
// try to get the user profile from stored data
        
$this->user Hybrid_Auth::storage()->get("hauth_session.{$this->providerId}.user");

        
// if not found
        
if (!is_object($this->user)) {
            throw new 
Exception("User profile request failed! User is not connected to {$this->providerId} or his session has expired."6);
        }

        return 
$this->user->profile;
    }

}
Онлайн: 1
Реклама