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

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

use 
ConcreteCoreAuthenticationLoginException;
use 
ConcreteCoreAuthenticationTypeOAuthOAuth2GenericOauth2TypeController;
use 
OAuthOAuth2ServiceGoogle;
use 
User;

class 
Controller extends GenericOauth2TypeController
{

    public function 
supportsRegistration()
    {
        return 
Config::get('auth.google.registration.enabled'false);
    }

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

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

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

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

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

        
$whitelist = array();
        foreach (
explode(PHP_EOL$args['whitelist']) as $entry) {
            
$whitelist[] = trim($entry);
        }

        
$blacklist = array();
        foreach (
explode(PHP_EOL$args['blacklist']) as $entry) {
            
$blacklist[] = json_decode(trim($entry), true);
        }

        
Config::save('auth.google.email_filters.whitelist'array_values(array_filter($whitelist)));
        
Config::save('auth.google.email_filters.blacklist'array_values(array_filter($blacklist)));
    }

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

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

        
$this->set('whitelist'Config::get('auth.google.email_filters.whitelist', array()));
        
$blacklist array_map(function($entry) {
            return 
json_encode($entry);
        }, 
Config::get('auth.google.email_filters.blacklist', array()));

        
$this->set('blacklist'$blacklist);
    }

    public function 
completeAuthentication(User $u)
    {
        
$ui UserInfo::getByID($u->getUserID());
        if (!
$ui->hasAvatar()) {
            try {
                
$image Image::open($this->getExtractor()->getImageURL());
                
$ui->updateUserAvatar($image);
            } catch(
ImagineExceptionInvalidArgumentException $e) {
                
Log::addNotice("Unable to fetch user images in Google Authentication Type, is allow_url_fopen disabled?");
            } catch(
Exception $e) {}
        }

        
parent::completeAuthentication($u);
    }

    public function 
isValid()
    {
        
$filters = (array)Config::get('auth.google.email_filters', array());
        
$domain $this->getExtractor()->getExtra('domain');

        foreach (
array_get($filters'whitelist', array()) as $regex) {
            if (
preg_match($regex$domain)) {
                return 
true;
            }
        }

        foreach (
array_get($filters'blacklist', array()) as $arr) {
            list(
$regex$error) = array_pad((array) $arr2null);
            if (
preg_match($regex$domain)) {
                if (
trim($error)) {
                    throw new 
LoginException($error);
                }
                return 
false;
            }
        }

        return 
true;
    }

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