<?php $provider = get_input('provider'); $guid = get_input('guid'); $user = get_entity($guid); if (!$provider || !$user) { forward('', '404'); } $session_name = get_input('session_name'); $session_handle = get_input('session_handle'); $ha_session = new Elgg\HybridAuth\Session($user, $session_name, $session_handle); $ha_provider = $ha_session->getProvider($provider); if (!$ha_provider) { forward('', '404'); } if ($ha_session->deauthenticate($ha_provider)) { system_message(elgg_echo('hybridauth:provider:user:deauthorized')); } else { register_error(elgg_echo('hybridauth:provider:user:deauthorized:error')); } forward(REFERER);
<?php if (!elgg_get_plugin_setting('public_auth', 'elgg_hybridauth')) { gatekeeper(); } $session_owner_guid = get_input('session_owner_guid'); $session_owner = get_entity($session_owner_guid); $session_name = get_input('session_name'); $session_handle = get_input('session_handle'); $user = $session_owner ?: elgg_get_logged_in_user_entity(); $ha_session = new Elgg\HybridAuth\Session($user, $session_name, $session_handle); $provider_name = get_input('provider'); $provider = $ha_session->getProvider($provider_name); if (!$provider) { forward(REFERRER, '400'); // bad request } $scope = get_input('scope'); if ($scope) { $uid = (int) $ha_session->isAuthenticated($provider); if (empty($_SESSION["HA:{$provider_name}:last_scope:{$uid}"])) { $_SESSION["HA:{$provider_name}:last_scope:{$uid}"] = 'default'; } if ($_SESSION["HA:{$provider_name}:last_scope:{$uid}"] != $scope) { // Check if scope has been explicitly required // Logout the user, and reauthenticate with the requested scope $config = $ha_session->getConfig(); if (!empty($config['providers'][$provider_name])) { $config['providers'][$provider_name]['scope'] = urldecode($scope); } $ha_session->setConfig($config);
/** * 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; }