Skip to content

Instantly share code, notes, and snippets.

@dkobia
Created October 13, 2011 17:53
Show Gist options
  • Save dkobia/1284934 to your computer and use it in GitHub Desktop.
Save dkobia/1284934 to your computer and use it in GitHub Desktop.
diff --git a/ee_system/expressionengine/modules/member/mod.member_auth.php b/ee_system/expressionengine/modules/member/mod.member_auth.php
index 510fb4c..4d2aef9 100644
--- a/ee_system/expressionengine/modules/member/mod.member_auth.php
+++ b/ee_system/expressionengine/modules/member/mod.member_auth.php
@@ -94,7 +94,7 @@ class Member_auth extends Member {
/** Member Login
/** ----------------------------------------*/
function member_login()
- {
+ {
/** ----------------------------------------
/** Is user banned?
/** ----------------------------------------*/
@@ -163,7 +163,7 @@ class Member_auth extends Member {
/** ----------------------------------------*/
if ( ! $this->EE->input->get('multi'))
{
- $sql = "SELECT exp_members.password, exp_members.unique_id, exp_members.member_id, exp_members.group_id
+ $sql = "SELECT exp_members.username, exp_members.screen_name, exp_members.email, exp_members.password, exp_members.unique_id, exp_members.member_id, exp_members.group_id
FROM exp_members, exp_member_groups
WHERE username = '".$this->EE->db->escape_str($this->EE->input->post('username'))."'
AND exp_members.group_id = exp_member_groups.group_id
@@ -197,7 +197,7 @@ class Member_auth extends Member {
// Check Session ID
- $query = $this->EE->db->query("SELECT exp_members.member_id, exp_members.password, exp_members.unique_id
+ $query = $this->EE->db->query("SELECT exp_members.username, exp_members.screen_name, exp_members.email, exp_members.member_id, exp_members.password, exp_members.unique_id
FROM exp_sessions, exp_members
WHERE exp_sessions.session_id = '".$this->EE->db->escape_str($this->EE->input->get('multi'))."'
AND exp_sessions.member_id = exp_members.member_id
@@ -258,8 +258,12 @@ class Member_auth extends Member {
$this->EE->config->site_prefs($final_site_name, $final_site_id);
}
}
-
- $this->EE->output->show_message($data);
+
+ //++ Using Tender
+ //$this->EE->output->show_message($data);
+
+ // Tender Login
+ $this->_tender_login($query, $sites[$this->EE->input->get('orig')]);
}
else
{
@@ -268,7 +272,11 @@ class Member_auth extends Member {
$next_url = $sites[$next].'?ACT='.$this->EE->functions->fetch_action_id('Member', 'member_login').
'&multi='.$this->EE->input->get('multi').'&cur='.$next.'&orig='.$this->EE->input->get_post('orig').'&orig_site_id='.$this->EE->input->get('orig_site_id');
- return $this->EE->functions->redirect($next_url);
+ //++ Using Tender
+ //return $this->EE->functions->redirect($next_url);
+
+ // Tender Login
+ $this->_tender_login($query, $next_url);
}
}
@@ -532,7 +540,9 @@ class Member_auth extends Member {
'link' => array($return, $site_name)
);
- $this->EE->output->show_message($data);
+ //++Tender Login
+ //$this->EE->output->show_message($data);
+ $this->_tender_login($query, $return);
}
@@ -891,7 +901,58 @@ class Member_auth extends Member {
$this->EE->output->show_message($data);
}
+
+
+ /**
+ * Log into TenderApp
+ *
+ * @access private
+ * @return void
+ */
+ private function _tender_login($query, $next_url)
+ {
+ $account_key = "test";
+ $api_key = "c3ebafb1b162a2f6fa";
+
+ $salted = $api_key . $account_key;
+ $hash = hash('sha1',$salted,true);
+ $saltedHash = substr($hash,0,16);
+ $iv = "OpenSSL for Ruby";
+
+ // use an expires date in the future, of course
+ $user_data = array(
+ "unique_id" => $query->row('unique_id'),
+ "email" => $query->row('email'),
+ "name" => $query->row('screen_name'),
+ "expires" => date('Y-m-d H:i:s', strtotime ( '+1 week' , strtotime(date('Y-m-d H:i:s')) )),
+ "to" => $next_url
+ );
+
+ $data = json_encode($user_data);
+ // double XOR first block
+ for ($i = 0; $i < 16; $i++)
+ {
+ $data[$i] = $data[$i] ^ $iv[$i];
+ }
+ $pad = 16 - (strlen($data) % 16);
+ $data = $data . str_repeat(chr($pad), $pad);
+
+ $cipher = mcrypt_module_open(MCRYPT_RIJNDAEL_128,'','cbc','');
+ mcrypt_generic_init($cipher, $saltedHash, $iv);
+ $encryptedData = mcrypt_generic($cipher,$data);
+ mcrypt_generic_deinit($cipher);
+ $encryptedData = base64_encode($encryptedData);
+ $encryptedData = preg_replace('/\=$/', '', $encryptedData);
+ $encryptedData = preg_replace('/\n/', '', $encryptedData);
+ $encryptedData = preg_replace('/\+/', '-', $encryptedData);
+ $encryptedData = preg_replace('/\//', '_', $encryptedData);
+
+ //print_r($user_data);
+ //echo $encryptedData;
+ header("Location: http://help.ushahidi.com/?sso=".urlencode($encryptedData));
+ die();
+ }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment