コード例 #1
0
ファイル: gnusocial_api.php プロジェクト: epsylon/Hydra-dev
/**
 * Forwards the user to gnusocial to authenticate
 *
 * This includes the login URL as the callback
 */
function gnusocial_api_forward()
{
    // sanity check
    if (!gnusocial_api_allow_sign_on_with_gnusocial()) {
        forward();
    }
    $callback = elgg_normalize_url("gnusocial_api/login");
    $request_link = gnusocial_api_get_authorize_url($callback);
    // capture metadata about login to persist through redirects
    $login_metadata = array('persistent' => (bool) get_input("persistent"));
    // capture referrer if in site, but not the gnusocial_api
    $session = elgg_get_session();
    $server = _elgg_services()->request->server;
    $ref = $server->get('HTTP_REFERER', '');
    if ($session->has('last_forward_from')) {
        $login_metadata['forward'] = $session->get('last_forward_from');
    } elseif (0 === strpos($ref, elgg_get_site_url()) && 0 !== strpos($ref, elgg_get_site_url() . 'gnusocial_api/')) {
        $login_metadata['forward'] = $ref;
    }
    $session->set('gnusocial_api_login_metadata', $login_metadata);
    forward($request_link, 'gnusocial_api');
}
コード例 #2
0
ファイル: usersettings.php プロジェクト: lorea/Hydra-dev
/**
 * User settings for GNUSocial API
 */
$user = elgg_get_logged_in_user_entity();
$user_guid = $user->getGUID();
$gnusocial_name = elgg_get_plugin_user_setting('gnusocial_name', $user_guid, 'gnusocial_api');
$access_key = elgg_get_plugin_user_setting('access_key', $user_guid, 'gnusocial_api');
$access_secret = elgg_get_plugin_user_setting('access_secret', $user_guid, 'gnusocial_api');
$site_key = elgg_get_plugin_setting('consumer_key', 'gnusocial_api');
$site_secret = elgg_get_plugin_setting('consumer_secret', 'gnusocial_api');
if (!($site_key && $site_secret)) {
    echo '<div>' . elgg_echo('gnusocial_api:usersettings:site_not_configured') . '</div>';
    return true;
}
$site_name = elgg_get_site_entity()->name;
echo '<div>' . elgg_echo('gnusocial_api:usersettings:description', array($site_name)) . '</div>';
if (!$access_key || !$access_secret) {
    // send user off to validate account
    $request_link = gnusocial_api_get_authorize_url(null, false);
    echo '<div>' . elgg_echo('gnusocial_api:usersettings:request', array($request_link, $site_name)) . '</div>';
} else {
    // if this user logged in through gnusocial and never set up an email address, don't
    // let them disassociate their account.
    if ($user->email) {
        $url = elgg_get_site_url() . "gnusocial_api/revoke";
        echo '<div>' . elgg_echo('gnusocial_api:usersettings:authorized', array($site_name, $gnusocial_name)) . '</div>';
        echo '<div>' . sprintf(elgg_echo('gnusocial_api:usersettings:revoke'), $url) . '</div>';
    } else {
        echo elgg_echo('gnusocial_api:usersettings:cannot_revoke', array(elgg_normalize_url('gnusocial_api/interstitial')));
    }
}