diff --git a/webapp/controller/MarketController.class.php b/webapp/controller/MarketController.class.php index a62ff769..297af70a 100644 --- a/webapp/controller/MarketController.class.php +++ b/webapp/controller/MarketController.class.php @@ -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); } } diff --git a/webapp/services/MarketService.php b/webapp/services/MarketService.php index 09829965..29bc3d71 100644 --- a/webapp/services/MarketService.php +++ b/webapp/services/MarketService.php @@ -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)); + } + }