Skip to content
Snippets Groups Projects
Select Git revision
  • a53561a07d204624c7604166fea9fd3fad49f534
  • test default protected
  • master protected
  • niki-stuff2
  • feat/niki-stuff
  • feat/custom-css
  • feat/redesign-improvements-10
  • feat/redesign-improvements-8
  • feat/redesign-fixes-3
  • feat/pirstan-changes
  • feat/separate-import-thread
  • feat/dary-improvements
  • features/add-pdf-page
  • features/add-typed-table
  • features/fix-broken-calendar-categories
  • features/add-embed-to-articles
  • features/create-mastodon-feed-block
  • features/add-custom-numbering-for-candidates
  • features/add-timeline
  • features/create-wordcloud-from-article-page
  • features/create-collapsible-extra-legal-info
21 results

search_page.html

Blame
  • pirati.php 3.86 KiB
    <?php
    /**
    *
    * This file is not a part of the phpBB Forum Software package.
    *
    * @copyleft (c) Czech Pirates Party <https://www.pirati.cz>
    * @license GNU General Public License, version 2 (GPL-2.0)
    *
    */
    
    
    namespace pirates\pirid;
    
    /**
    * Pirati OAuth service
    */
    class pirati extends \phpbb\auth\provider\oauth\service\base
    {
    
        /**
        * phpBB config
        *
        * @var \phpbb\config\config
        */
        protected $config;
    
        /**
        * phpBB request
        *
        * @var \phpbb\request\request_interface
        */
        protected $request;
    
        /**
        * Constructor
        *
        * @param    \phpbb\config\config               $config
        * @param    \phpbb\request\request_interface   $request
        */
        public function __construct(\phpbb\config\config $config, \phpbb\request\request_interface $request)
        {
    
    	    $this->config = $config;
            $this->request = $request;
    
    	    global $phpbb_container;
            $language = $phpbb_container->get('language');
            $language->add_lang(array('common', 'acp/common'), 'pirates/pirid');
    
        }
    
        public function get_external_service_class()
        {
                return 'Pirati';
        }
    
        /**
         * {@inheritdoc}
         */
        public function get_auth_scope()
        {
                return [
                       'openid',
                       'email',
                ];
        }
    
        /**
        * {@inheritdoc}
        */
        public function get_service_credentials()
        {
            return array(
                'key'     => $this->config['auth_oauth_pirid_key'],
                'secret'  => $this->config['auth_oauth_pirid_secret'],
            );
        }
    
    
        function octopussy_callback( $uid )
        {
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, "https://chobotnice.pirati.cz/import-person/" . $uid . "/");
            curl_exec($ch);
            curl_close($ch);
        }
    
    
        /**
        * {@inheritdoc}
        */
        public function perform_auth_login()
        {
          if (!($this->service_provider instanceof \OAuth\OAuth2\Service\Pirati))
            {
                throw new \phpbb\auth\provider\oauth\service\exception('AUTH_PROVIDER_OAUTH_ERROR_INVALID_SERVICE_TYPE');
            }
    
            try
            {
                    $this->service_provider->requestAccessToken($this->request->variable('code', ''));
            }
            catch (\OAuth\Common\Http\Exception\TokenResponseException $e)
            {
                    throw new \phpbb\auth\provider\oauth\service\exception('AUTH_PROVIDER_OAUTH_ERROR_REQUEST');
            }
    
            try
            {
                    // Send a request with it
                    $result = (array) json_decode($this->service_provider->request('protocol/openid-connect/userinfo'), true);
            }
            catch (\OAuth\Common\Exception\Exception $e)
            {
                    throw new \phpbb\auth\provider\oauth\service\exception('AUTH_PROVIDER_OAUTH_ERROR_REQUEST');
            }
    
            if (!isset($result['preferred_username']))
            {
                    throw new \phpbb\auth\provider\oauth\service\exception('AUTH_PROVIDER_OAUTH_RETURN_ERROR');
            }
    
            $this->octopussy_callback($result['sub']);
            return $result['sub'];
    
        }
    
        /**
        * {@inheritdoc}
        */
        public function perform_token_auth()
        {
            if (!($this->service_provider instanceof \OAuth\OAuth2\Service\Pirati))
            {
                throw new \phpbb\auth\provider\oauth\service\exception('AUTH_PROVIDER_OAUTH_ERROR_INVALID_SERVICE_TYPE');
            }
    
            try
            {
                    $result = (array) json_decode($this->service_provider->request('protocol/openid-connect/userinfo'), true);
            }
            catch (\OAuth\Common\Exception\Exception $e)
            {
                    throw new exception('AUTH_PROVIDER_OAUTH_ERROR_REQUEST');
            }
    
            if (!isset($result['preferred_username']))
            {
                    throw new \phpbb\auth\provider\oauth\service\exception('AUTH_PROVIDER_OAUTH_RETURN_ERROR');
            }
    
            $this->octopussy_callback($result['sub']);
            return $result['sub'];
    
        }
    }