} else {
        $forward_url = "?{$query}";
    }
}
if ($session_handle && $session_handle != \Elgg\HybridAuth\Session::DEFAULT_HANDLE) {
    forward($forward_url);
}
// Does this user profile exist?
$options = array('type' => 'user', 'plugin_id' => 'elgg_hybridauth', 'plugin_user_setting_name_value_pairs' => array('name' => $ha_session->getAuthRecordName($provider), 'value' => $profile->identifier), 'limit' => 0);
$users = elgg_get_entities_from_plugin_user_settings($options);
if (elgg_is_logged_in()) {
    $logged_in = elgg_get_logged_in_user_entity();
    if (!$users || $users[0]->guid == $logged_in->guid) {
        // User already has an account
        // Linking provider profile to an existing account
        $ha_session->addAuthRecord($provider, $profile);
        system_message(elgg_echo('hybridauth:link:provider', array($provider->getName())));
        forward($forward_url);
    } else {
        // Another user has already linked this profile
        $ha_session->deauthenticate($provider, false);
        echo elgg_view('resources/hybridauth/error', array('provider' => $provider->getName(), 'error' => elgg_echo('hybridauth:link:provider:error', array($provider->getName())), 'retry' => false));
        return;
    }
}
if (!$users) {
    // try one more time to match a user with plugin setting
    $testusers = get_user_by_email($profile->email);
    foreach ($testusers as $t) {
        $users = array();
        if ($profile->identifier == elgg_get_plugin_user_setting($ha_session->getAuthRecordName($provider), $t->guid, 'elgg_hybridauth')) {
Ejemplo n.º 2
0
Archivo: start.php Proyecto: n8b/VMN
/**
 * Add an additional provider to the list of providers the user is authenticated with
 *
 * @param string   $event "login"
 * @param string   $type  "user"
 * @param ElggUser $user  User entity
 * @return boolean
 */
function elgg_hybridauth_aux_provider($event, $type, $user)
{
    $aux_provider = get_input('aux_provider');
    $aux_provider_uid = get_input('aux_provider_uid');
    if ($aux_provider && $aux_provider_uid) {
        $ha_session = new \Elgg\HybridAuth\Session($user);
        $provider = $ha_session->getProvider($aux_provider);
        if ($provider) {
            $ha_session->addAuthRecord($provider, $aux_provider_uid);
            system_message(elgg_echo('hybridauth:link:provider', array($provider->getName())));
        }
    }
    return true;
}