You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

388 lines
13 KiB

<?php
/** miniOrange enables user to log in through OpenID to apps such as Google, Salesforce etc.
Copyright (C) 2015 miniOrange
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>
* @package miniOrange OAuth
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
*/
/**
This library is miniOrange Authentication Service.
Contains Request Calls to Customer service.
**/
class CustomerOpenID {
public $email;
public $phone;
private $defaultCustomerKey = "16555";
private $defaultApiKey = "fFd2XcvTGDemZvbw1bcUesNJWEqKbbUq";
function create_customer(){
$url = get_option('mo_openid_host_name') . '/moas/rest/customer/add';
$ch = curl_init( $url );
global $current_user;
$current_user = wp_get_current_user();
$this->email = get_option('mo_openid_admin_email');
$this->phone = get_option('mo_openid_admin_phone');
$company = get_option('mo_openid_admin_company_name');
$first_name = get_option('mo_openid_admin_first_name');
$last_name = get_option('mo_openid_admin_last_name');
$password = get_option('mo_openid_admin_password');
$fields = array(
'companyName' => $company,
'areaOfInterest' => 'WP OpenID Connect Login Plugin',
'firstname' => $first_name,
'lastname' => $last_name,
'email' => $this->email,
'phone' => $this->phone,
'password' => $password
);
$field_string = json_encode($fields);
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
curl_setopt( $ch, CURLOPT_ENCODING, "" );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_AUTOREFERER, true );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false ); # required for https urls
curl_setopt( $ch, CURLOPT_MAXREDIRS, 10 );
curl_setopt( $ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'charset: UTF - 8', 'Authorization: Basic' ) );
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $field_string );
$content = curl_exec( $ch );
if( curl_errno( $ch ) ){
echo 'Request Error:' . curl_error( $ch );
exit();
}
curl_close( $ch );
return $content;
}
function get_customer_key() {
$url = get_option('mo_openid_host_name') . "/moas/rest/customer/key";
$ch = curl_init( $url );
$email = get_option("mo_openid_admin_email");
$password = get_option("mo_openid_admin_password");
$fields = array(
'email' => $email,
'password' => $password
);
$field_string = json_encode( $fields );
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
curl_setopt( $ch, CURLOPT_ENCODING, "" );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_AUTOREFERER, true );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false ); # required for https urls
curl_setopt( $ch, CURLOPT_MAXREDIRS, 10 );
curl_setopt( $ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'charset: UTF - 8', 'Authorization: Basic' ) );
curl_setopt( $ch, CURLOPT_POST, true);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $field_string);
$content = curl_exec( $ch );
if( curl_errno( $ch ) ){
echo 'Request Error:' . curl_error( $ch );
exit();
}
curl_close( $ch );
return $content;
}
function check_customer() {
$url = get_option('mo_openid_host_name') . "/moas/rest/customer/check-if-exists";
$ch = curl_init( $url );
$email = get_option("mo_openid_admin_email");
$fields = array(
'email' => $email,
);
$field_string = json_encode( $fields );
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
curl_setopt( $ch, CURLOPT_ENCODING, "" );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_AUTOREFERER, true );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false ); # required for https urls
curl_setopt( $ch, CURLOPT_MAXREDIRS, 10 );
curl_setopt( $ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'charset: UTF - 8', 'Authorization: Basic' ) );
curl_setopt( $ch, CURLOPT_POST, true);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $field_string);
$content = curl_exec( $ch );
if( curl_errno( $ch ) ){
echo 'Request Error:' . curl_error( $ch );
exit();
}
curl_close( $ch );
return $content;
}
function send_otp_token($authType){
$url = get_option('mo_openid_host_name') . '/moas/api/auth/challenge';
$ch = curl_init($url);
$customerKey = $this->defaultCustomerKey;
$apiKey = $this->defaultApiKey;
$username = get_option('mo_openid_admin_email');
$phone = get_option('mo_openid_admin_phone');
/* Current time in milliseconds since midnight, January 1, 1970 UTC. */
$currentTimeInMillis = round(microtime(true) * 1000);
/* Creating the Hash using SHA-512 algorithm */
$stringToHash = $customerKey . number_format($currentTimeInMillis, 0, '', '') . $apiKey;
$hashValue = hash("sha512", $stringToHash);
$customerKeyHeader = "Customer-Key: " . $customerKey;
$timestampHeader = "Timestamp: " . $currentTimeInMillis;
$authorizationHeader = "Authorization: " . $hashValue;
if($authType == 'EMAIL') {
$fields = array(
'customerKey' => $customerKey,
'email' => $username,
'authType' => 'EMAIL',
'transactionName' => 'WordPress miniOrange Social Login, Social Sharing'
);
}else if($authType == 'SMS'){
$fields = array(
'customerKey' => $customerKey,
'phone' => $phone,
'authType' => 'SMS',
'transactionName' => 'WordPress miniOrange Social Login, Social Sharing'
);
}
$field_string = json_encode($fields);
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
curl_setopt( $ch, CURLOPT_ENCODING, "" );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_AUTOREFERER, true );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false ); # required for https urls
curl_setopt( $ch, CURLOPT_MAXREDIRS, 10 );
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json", $customerKeyHeader,
$timestampHeader, $authorizationHeader));
curl_setopt( $ch, CURLOPT_POST, true);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $field_string);
$content = curl_exec($ch);
if(curl_errno($ch)){
echo 'Request Error:' . curl_error($ch);
exit();
}
curl_close($ch);
return $content;
}
function check_customer_valid(){
$url = get_option('mo_openid_host_name') . '/moas/api/customer/license';
$ch = curl_init($url);
$customerKey = get_option('mo_openid_admin_customer_key');
$apiKey = get_option('mo_openid_admin_api_key');
$username = get_option('mo_openid_admin_email');
$phone = get_option('mo_openid_admin_phone');
/* Current time in milliseconds since midnight, January 1, 1970 UTC. */
$currentTimeInMillis = round(microtime(true) * 1000);
/* Creating the Hash using SHA-512 algorithm */
$stringToHash = $customerKey . number_format($currentTimeInMillis, 0, '', '') . $apiKey;
$hashValue = hash("sha512", $stringToHash);
$customerKeyHeader = "Customer-Key: " . $customerKey;
$timestampHeader = "Timestamp: " . $currentTimeInMillis;
$authorizationHeader = "Authorization: " . $hashValue;
$fields = array(
'customerId' => $customerKey,
'applicationName' => 'wp_social_login'
);
$field_string = json_encode($fields);
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
curl_setopt( $ch, CURLOPT_ENCODING, "" );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_AUTOREFERER, true );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false ); # required for https urls
curl_setopt( $ch, CURLOPT_MAXREDIRS, 10 );
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json", $customerKeyHeader,
$timestampHeader, $authorizationHeader));
curl_setopt( $ch, CURLOPT_POST, true);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $field_string);
$content = curl_exec($ch);
if(curl_errno($ch)){
echo 'Request Error:' . curl_error($ch);
exit();
}
curl_close($ch);
return $content;
}
function validate_otp_token($transactionId,$otpToken){
$url = get_option('mo_openid_host_name') . '/moas/api/auth/validate';
$ch = curl_init($url);
$customerKey = $this->defaultCustomerKey;
$apiKey = $this->defaultApiKey;
$username = get_option('mo_openid_admin_email');
/* Current time in milliseconds since midnight, January 1, 1970 UTC. */
$currentTimeInMillis = round(microtime(true) * 1000);
/* Creating the Hash using SHA-512 algorithm */
$stringToHash = $customerKey . number_format($currentTimeInMillis, 0, '', '') . $apiKey;
$hashValue = hash("sha512", $stringToHash);
$customerKeyHeader = "Customer-Key: " . $customerKey;
$timestampHeader = "Timestamp: " . $currentTimeInMillis;
$authorizationHeader = "Authorization: " . $hashValue;
$fields = '';
//*check for otp over sms/email
$fields = array(
'txId' => $transactionId,
'token' => $otpToken,
);
$field_string = json_encode($fields);
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
curl_setopt( $ch, CURLOPT_ENCODING, "" );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_AUTOREFERER, true );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false ); # required for https urls
curl_setopt( $ch, CURLOPT_MAXREDIRS, 10 );
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json", $customerKeyHeader,
$timestampHeader, $authorizationHeader));
curl_setopt( $ch, CURLOPT_POST, true);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $field_string);
$content = curl_exec($ch);
if(curl_errno($ch)){
echo 'Request Error:' . curl_error($ch);
exit();
}
curl_close($ch);
return $content;
}
function submit_contact_us( $email, $phone, $query ) {
global $current_user;
$current_user = wp_get_current_user();
$company = get_option('mo_openid_admin_company_name') ? get_option('mo_openid_admin_company_name') : '';
$first_name = get_option('mo_openid_admin_first_name') ? get_option('mo_openid_admin_first_name') : '';
$last_name = get_option('mo_openid_admin_last_name') ? get_option('mo_openid_admin_last_name') : '';
$query = '[WP OpenID Connect Login Plugin] ' . $query;
$fields = array(
'firstName' => $first_name,
'lastName' => $last_name,
'company' => $company,
'email' => $email,
'phone' => $phone,
'query' => $query
);
$field_string = json_encode( $fields );
$url = get_option('mo_openid_host_name') . '/moas/rest/customer/contact-us';
$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
curl_setopt( $ch, CURLOPT_ENCODING, "" );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_AUTOREFERER, true );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false ); # required for https urls
curl_setopt( $ch, CURLOPT_MAXREDIRS, 10 );
curl_setopt( $ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'charset: UTF-8', 'Authorization: Basic' ) );
curl_setopt( $ch, CURLOPT_POST, true);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $field_string);
$content = curl_exec( $ch );
if( curl_errno( $ch ) ){
echo 'Request Error:' . curl_error( $ch );
return false;
}
//echo " Content: " . $content;
curl_close( $ch );
return true;
}
function forgot_password($email){
$url = get_option('mo_openid_host_name') . '/moas/rest/customer/password-reset';
$ch = curl_init($url);
/* The customer Key provided to you */
$customerKey = get_option('mo_openid_admin_customer_key');
/* The customer API Key provided to you */
$apiKey = get_option('mo_openid_admin_api_key');
/* Current time in milliseconds since midnight, January 1, 1970 UTC. */
$currentTimeInMillis = round(microtime(true) * 1000);
/* Creating the Hash using SHA-512 algorithm */
$stringToHash = $customerKey . number_format($currentTimeInMillis, 0, '', '') . $apiKey;
$hashValue = hash("sha512", $stringToHash);
$customerKeyHeader = "Customer-Key: " . $customerKey;
$timestampHeader = "Timestamp: " . $currentTimeInMillis;
$authorizationHeader = "Authorization: " . $hashValue;
$fields = '';
//*check for otp over sms/email
$fields = array(
'email' => $email
);
$field_string = json_encode($fields);
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
curl_setopt( $ch, CURLOPT_ENCODING, "" );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_AUTOREFERER, true );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false ); # required for https urls
curl_setopt( $ch, CURLOPT_MAXREDIRS, 10 );
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json", $customerKeyHeader,
$timestampHeader, $authorizationHeader));
curl_setopt( $ch, CURLOPT_POST, true);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $field_string);
curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt( $ch, CURLOPT_TIMEOUT, 20);
$content = curl_exec($ch);
if(curl_errno($ch)){
return null;
}
curl_close($ch);
return $content;
}
}?>