Seditio Source
Root |
./othercms/ips_4.3.4/oauth/callback/index.php
<?php
/**
 * @brief        OAuth Client Redirection Endpoint
 * @author        <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a>
 * @copyright    (c) Invision Power Services, Inc.
 * @license        https://www.invisioncommunity.com/legal/standards/
 * @package        Invision Community
 * @since        31 May 2017
 */

define('REPORT_EXCEPTIONS', TRUE);
require
'../../init.php';
\
IPS\Session\Front::i();

if ( isset( \
IPS\Request::i()->state ) and $explodedData = explode( '-', \IPS\Request::i()->state ) and count( $explodedData ) === 4 and $destination = @base64_decode( $explodedData[1] ) )
{
    try
    {
       
$destination = \IPS\Http\Url::createFromString( $destination )->setQueryString( array(
           
'_processLogin'    => $explodedData[0],
           
'csrfKey'        => $explodedData[2],
           
'ref'            => $explodedData[3],
        ) );
        if ( !(
$destination instanceof \IPS\Http\Url\Internal ) )
        {
            throw new \
Exception;
        }
       
        if ( isset( \
IPS\Request::i()->error ) )
        {
            foreach ( array(
'error', 'error_description', 'error_uri' ) as $k )
            {
                if ( isset( \
IPS\Request::i()->$k ) )
                {
                   
$destination = $destination->setQueryString( $k, \IPS\Request::i()->$k );
                }
            }
        }

       
/* OAuth 2 */
       
if ( isset( \IPS\Request::i()->access_token ) )
        {
            foreach ( array(
'access_token', 'token_type', 'expires_in', 'scope', 'state' ) as $k )
            {
                if ( isset( \
IPS\Request::i()->$k ) )
                {
                   
$destination = $destination->setQueryString( $k, \IPS\Request::i()->$k );
                }
            }
        }
       
/* OAuth 1 */
       
elseif ( isset( \IPS\Request::i()->oauth_token ) )
        {
            foreach ( array(
'oauth_token', 'oauth_verifier', 'state' ) as $k )
            {
                if ( isset( \
IPS\Request::i()->$k ) )
                {
                   
$destination = $destination->setQueryString( $k, \IPS\Request::i()->$k );
                }
            }
        }
        elseif ( isset( \
IPS\Request::i()->code ) )
        {
           
$destination = $destination->setQueryString( 'code', \IPS\Request::i()->code );
        }
                       
        \
IPS\Output::i()->redirect( $destination );
        exit;
    }
    catch ( \
Exception $e ) {}
}

$url = (string) \IPS\Http\Url::internal( 'oauth/callback/', 'none' );
?><!DOCTYPE html>
<html>
    <head>
        <title><?php echo \IPS\Member::loggedIn()->language()->get( 'loading' ); ?></title>
        <script>
            if ( window.location.hash ) {
                var hash = window.location.hash.substr( 0, 1 ) == '#' ? window.location.hash.substr( 1 ) : window.location.hash;
                window.location = "<?php echo $url; ?>?" + hash;
            }
        </script>
    </head>
    <body>
        <noscript><?php echo \IPS\Member::loggedIn()->language()->get( 'oauth_implicit_no_js' ); ?></noscript>
    </body>
</html>