1
This commit is contained in:
parent
98a174d8e3
commit
0a680597e9
@ -463,45 +463,7 @@ class MarketController extends BaseController {
|
||||
$tips = getReqVal('tips', '') ;
|
||||
$nonce = getReqVal('nonce', '');
|
||||
$signature = getReqVal('signature', '');
|
||||
$params = array(
|
||||
'c' => 'BcService',
|
||||
'a' => 'authVerifySignature',
|
||||
'tips' => $tips,
|
||||
'nonce' => $nonce,
|
||||
'signature' => $signature
|
||||
);
|
||||
$url = MarketService::getWeb3ServiceUrl();
|
||||
$response = '';
|
||||
if (!phpcommon\HttpClient::get
|
||||
($url,
|
||||
$params,
|
||||
$response)) {
|
||||
myself()->_rspErr(500, 'server internal error');
|
||||
die();
|
||||
return;
|
||||
}
|
||||
error_log(json_encode(array(
|
||||
'_REQUEST' => $_REQUEST,
|
||||
'params' => $params,
|
||||
'response' => $response
|
||||
)));
|
||||
$data = json_decode($response, true);
|
||||
if (getXVal($data, 'errcode', 0) != 0) {
|
||||
myself()->_rspErr(1, 'Signature verification failed');
|
||||
die();
|
||||
return;
|
||||
} else {
|
||||
$recovered = getXVal($data, 'recovered', '');
|
||||
if (!phpcommon\isSameAddress($recovered, $account)) {
|
||||
myself()->_rspErr(1, 'Signature verification failed');
|
||||
die();
|
||||
return;
|
||||
} else {
|
||||
myself()->_rspData(array(
|
||||
'token' => MarketService::genToken($account, $nonce)
|
||||
));
|
||||
}
|
||||
}
|
||||
MarketService::auth($account, $tips, $nonce, $signature);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -27,22 +27,6 @@ class MarketService extends BaseService {
|
||||
return false;
|
||||
}
|
||||
|
||||
public static function genToken($account, $nonce)
|
||||
{
|
||||
$data = array(
|
||||
'account' => $account,
|
||||
'rand' => uniqid(),
|
||||
'nonce' => $nonce,
|
||||
'createtime' => myself()->_getNowTime(),
|
||||
);
|
||||
$data['sign'] = md5(self::TOKEN_SALT .
|
||||
$data['account'] .
|
||||
$data['rand'] .
|
||||
$data['nonce'] .
|
||||
$data['createtime']);
|
||||
return base64_encode(json_encode($data));
|
||||
}
|
||||
|
||||
public static function buyBoxVerifySignature($buyerAddress,
|
||||
$type,
|
||||
$paymentTokenAddress,
|
||||
@ -90,10 +74,69 @@ class MarketService extends BaseService {
|
||||
}
|
||||
}
|
||||
|
||||
public static function getWeb3ServiceUrl()
|
||||
public static function auth($account, $tips, $nonce, $signature)
|
||||
{
|
||||
$params = array(
|
||||
'c' => 'BcService',
|
||||
'a' => 'authVerifySignature',
|
||||
'tips' => $tips,
|
||||
'nonce' => $nonce,
|
||||
'signature' => $signature
|
||||
);
|
||||
$url = self::getWeb3ServiceUrl();
|
||||
$response = '';
|
||||
if (!phpcommon\HttpClient::get
|
||||
($url,
|
||||
$params,
|
||||
$response)) {
|
||||
myself()->_rspErr(500, 'server internal error');
|
||||
die();
|
||||
return;
|
||||
}
|
||||
error_log(json_encode(array(
|
||||
'_REQUEST' => $_REQUEST,
|
||||
'params' => $params,
|
||||
'response' => $response
|
||||
)));
|
||||
$data = json_decode($response, true);
|
||||
if (getXVal($data, 'errcode', 0) != 0) {
|
||||
myself()->_rspErr(1, 'Signature verification failed');
|
||||
die();
|
||||
return;
|
||||
} else {
|
||||
$recovered = getXVal($data, 'recovered', '');
|
||||
if (!phpcommon\isSameAddress($recovered, $account)) {
|
||||
myself()->_rspErr(1, 'Signature verification failed');
|
||||
die();
|
||||
return;
|
||||
} else {
|
||||
myself()->_rspData(array(
|
||||
'token' => self::genToken($account, $nonce)
|
||||
));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static function getWeb3ServiceUrl()
|
||||
{
|
||||
$web3ServiceCluster = require_once('../config/web3service.cluster.php');
|
||||
return $web3ServiceCluster[rand() % count($web3ServiceCluster)];
|
||||
}
|
||||
|
||||
private static function genToken($account, $nonce)
|
||||
{
|
||||
$data = array(
|
||||
'account' => $account,
|
||||
'rand' => uniqid(),
|
||||
'nonce' => $nonce,
|
||||
'createtime' => myself()->_getNowTime(),
|
||||
);
|
||||
$data['sign'] = md5(self::TOKEN_SALT .
|
||||
$data['account'] .
|
||||
$data['rand'] .
|
||||
$data['nonce'] .
|
||||
$data['createtime']);
|
||||
return base64_encode(json_encode($data));
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user