function _oauthconnector_button in OAuth Connector 6
Same name and namespace in other branches
- 7 oauthconnector.module \_oauthconnector_button()
1 call to _oauthconnector_button()
1 string reference to '_oauthconnector_button'
- oauthconnector_connector in ./
oauthconnector.module - Implementation of hook_connector().
File
- ./
oauthconnector.module, line 372 - OAuth Connector module
Code
function _oauthconnector_button($form, &$form_state, $login = TRUE) {
global $user;
//TODO: Move some of the contens of this function to oauth_common_get_request_token()?
$provider = $form_state['clicked_button']['connector']['#value']['oauthconnector provider'];
$callback_url = url('oauth/authorized', array(
'absolute' => TRUE,
));
$consumer = DrupalOAuthConsumer::loadById($provider->csid, FALSE);
$sig_method = DrupalOAuthClient::signatureMethod(substr(strtolower($provider->consumer_advanced['signature method']), 5));
$client = new DrupalOAuthClient($consumer, NULL, $sig_method);
//TODO: Deal with errors! Add a try-catch
$request_token = $client
->getRequestToken($provider->consumer_advanced['request token endpoint'], array(
'realm' => $provider->consumer_advanced['authentication realm'],
'callback' => $callback_url,
));
if (!$login) {
$request_token->uid = $user->uid;
}
$request_token
->write();
//TODO: If 'oauthconnector_request_key' is already set - then remove the old one - we can only use one at a time
$_SESSION['oauthconnector_request_key'] = $request_token->key;
$_SESSION['oauthconnector_login'] = $login;
$auth_url = $client
->getAuthorizationUrl($provider->consumer_advanced['authorization endpoint'], array(
'callback' => $callback_url,
));
if (isset($_REQUEST['destination'])) {
$destination = $_REQUEST['destination'];
unset($_REQUEST['destination']);
}
elseif (isset($_REQUEST['edit']['destination'])) {
$destination = $_REQUEST['edit']['destination'];
unset($_REQUEST['edit']['destination']);
}
else {
$destination = isset($_GET['q']) ? $_GET['q'] : '';
$query = drupal_query_string_encode($_GET, array(
'q',
));
if ($query != '') {
$destination .= '?' . $query;
}
}
$_SESSION['oauthconnector_destination'] = $destination;
drupal_goto($auth_url);
}