Вход Регистрация
Файл: concrete5.7.5.6/concrete/authentication/twitter/controller.php
Строк: 184
<?php
namespace ConcreteAuthenticationTwitter;

defined('C5_EXECUTE') or die('Access Denied');

use 
ConcreteCoreAuthenticationTypeOAuthOAuth1aGenericOauth1aTypeController;
use 
ConcreteCoreValidationCSRFToken;
use 
OAuthCommonExceptionException;
use 
OAuthOAuth1ServiceTwitter;
use 
SymfonyComponentHttpFoundationSessionFlashFlashBagInterface;

class 
Controller extends GenericOauth1aTypeController
{
    public 
$apiMethods = array('handle_error''handle_success''handle_register');

    
/**
     * @var string
     */
    
protected $email;

    protected 
$username;

    protected 
$firstName;

    protected 
$lastName;

    public function 
registrationGroupID()
    {
        return 
Config::get('auth.twitter.registration.group');
    }

    
/**
     * Twitter doesn't give us the users email.
     *
     * @return bool
     */
    
public function supportsRegistration()
    {
        return 
Config::get('auth.twitter.registration.enabled'false);
    }

    
/**
     * Twitter doesn't give us the users email.
     *
     * @return bool
     */
    
public function supportsEmailResolution()
    {
        return 
false;
    }

    public function 
getAuthenticationTypeIconHTML()
    {
        return 
'<i class="fa fa-twitter"></i>';
    }

    public function 
getHandle()
    {
        return 
'twitter';
    }

    
/**
     * @return Twitter
     */
    
public function getService()
    {
        if (!
$this->service) {
            
$this->service Core::make('authentication/twitter');
        }
        return 
$this->service;
    }

    public function 
saveAuthenticationType($args)
    {
        
Config::save('auth.twitter.appid'$args['apikey']);
        
Config::save('auth.twitter.secret'$args['apisecret']);
        
Config::save('auth.twitter.registration.enabled', !!$args['registration_enabled']);
        
Config::save('auth.twitter.registration.group'intval($args['registration_group'], 10));
    }

    public function 
edit()
    {
        
$this->set('form'Loader::helper('form'));
        
$this->set('apikey'Config::get('auth.twitter.appid'''));
        
$this->set('apisecret'Config::get('auth.twitter.secret'''));

        
$list = new GroupList();
        
$list->includeAllGroups();
        
$this->set('groups'$list->getResults());
    }

    
/**
     * We override this method because twitter doesn't give us the email, we have to have the user input it before we can create a user.
     * @return null|User
     * @throws Exception
     */
    
protected function attemptAuthentication()
    {
        
$extractor $this->getExtractor();
        
$user_id $this->getBoundUserID($extractor->getUniqueId());

        if (
$user_id && $user_id 0) {
            
$user User::loginByUserID($user_id);
            if (
$user && !$user->isError()) {
                return 
$user;
            }
        }

        if (
$extractor->supportsEmail() && $user UserInfo::getByEmail($extractor->getEmail())) {
            if (
$user && !$user->isError()) {
                throw new 
Exception('A user account already exists for this email, please log in and attach from your account page.');
            }
        }

        if (
$this->supportsRegistration()) {
            
/** @var FlashBagInterface $flashbag */
            
$flashbag Session::getFlashBag();
            
$flashbag->set('firstname'parent::getFirstName());
            
$flashbag->set('lastname'parent::getLastName());
            
$flashbag->set('username'parent::getUsername());
            
$flashbag->set('token'$this->getToken());

            
$response Redirect::to('/login/callback/twitter/handle_register/'id(new Token)->generate('twitter_register'));
            
$response->send();
            exit;
        }

        return 
null;
    }

    public function 
handle_register($token=null) {

        
/** @var FlashBagInterface $flashbag */
        
$flashbag Session::getFlashBag();
        
$this->firstName array_shift($flashbag->peek('firstname'));
        
$this->lastName array_shift($flashbag->peek('lastName'));
        
$this->username array_shift($flashbag->peek('username'));
        
$this->token array_shift($flashbag->peek('token'));

        
$token_helper = new Token;

        if (!
$token_helper->validate('twitter_register'$token) && !$token_helper->validate('twitter_register') ||
            !
$this->token) {
            
$this->redirect('/login/');
            exit;
        }
        if (
Request::request('uEmail'false)) {
            
$this->email Request::request('uEmail');

            
$user $this->createUser();
            if (
$user && !$user->isError()) {
                
$this->completeAuthentication($user);
            }
        }

        
$this->set('username'$this->username);
        
$this->set('show_email'true);
    }

    public function 
supportsEmail() {
        return 
true;
    }

    public function 
getEmail() {
        if (!
$this->email) {
            
$this->email parent::getEmail();
        }
        return 
$this->email;
    }

    public function 
getFirstName() {
        if (!
$this->firstName) {
            
$this->firstName parent::getFirstname();
        }
        return 
$this->firstName;
    }

    public function 
getLastName() {
        if (!
$this->lastName) {
            
$this->lastName parent::getLastName();
        }
        return 
$this->lastName;
    }

    public function 
getUsername() {
        if (!
$this->username) {
            
$this->username parent::getUsername();
        }
        return 
$this->username;
    }


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