This commit is contained in:
aozhiwei 2022-04-02 15:31:57 +08:00
parent 0b1121b9fc
commit caa43d3504
2 changed files with 56 additions and 38 deletions

View File

@ -12,12 +12,15 @@ require_once('models/BoxOrder.php');
require_once('models/Nft.php');
require_once('models/BuyRecord.php');
require_once('services/MarketService.php');
require_once('phpcommon/bchelper.php');
use phpcommon\SqlHelper;
use models\BoxOrder;
use models\Nft;
use models\BuyRecord;
use services\MarketService;
const CURRENCY_DECIMALS = 8;
const PRICE_PAD = '0000000000';
@ -27,8 +30,6 @@ const PRESALE_PREPARE = 1;
const PRESALE_STARTED = 2;
const PRESALE_SOLD_OUT = 3;
const TOKEN_SALT = 'B8E6BD4F-FD7B-E2B8-6688-80A2D8632064';
class MarketController extends BaseController {
private function isTestMode()
@ -202,7 +203,7 @@ class MarketController extends BaseController {
$signature = getReqVal('signature', '');
$gameId = 2006;
$funcId = 1;
if (!$this->isValidToken($buyerAddress, $token)) {
if (!MarketService::isValidToken($buyerAddress, $token)) {
myself()->_rspErr(100, 'invalid token');
return;
}
@ -328,7 +329,7 @@ class MarketController extends BaseController {
$token = getReqVal('token', '');
$account = getReqVal('account', '');
$orderId = getReqVal('order_id', '');
if (!$this->isValidToken($account, $token)) {
if (!MarketService::isValidToken($account, $token)) {
myself()->_rspErr(100, 'invalid token');
return;
}
@ -361,7 +362,7 @@ class MarketController extends BaseController {
{
$account = getReqVal('account', '');
$token = getReqVal('token', '');
if (!$this->isValidToken($account, $token)) {
if (!MarketService::isValidToken($account, $token)) {
myself()->_rspErr(100, 'invalid token');
return;
}
@ -381,7 +382,7 @@ class MarketController extends BaseController {
$account = getReqVal('account', '');
$token = getReqVal('token', '');
$tokenId = getReqVal('token_id', '');
if (!$this->isValidToken($account, $token)) {
if (!MarketService::isValidToken($account, $token)) {
myself()->_rspErr(100, 'invalid token');
return;
}
@ -485,7 +486,7 @@ class MarketController extends BaseController {
$token = getReqVal('token', '');
$nonce = uniqid() . '_' . myself()->_getNowTime();
myself()->_rspData(array(
'state' => $this->isValidToken($account, $token) ? 1 : 0,
'state' => MarketService::isValidToken($account, $token) ? 1 : 0,
'nonce' => $nonce,
));
}
@ -494,7 +495,7 @@ class MarketController extends BaseController {
{
$account = getReqVal('account', '');
$token = getReqVal('token', '');
if (!$this->isValidToken($account, $token)) {
if (!MarketService::isValidToken($account, $token)) {
myself()->_rspErr(1, 'invalid token');
return;
}
@ -544,7 +545,7 @@ class MarketController extends BaseController {
return;
} else {
myself()->_rspData(array(
'token' => $this->genToken($account, $nonce)
'token' => MarketService::genToken($account, $nonce)
));
}
}
@ -564,33 +565,4 @@ class MarketController extends BaseController {
return $web3ServiceCluster[rand() % count($web3ServiceCluster)];
}
private function genToken($account, $nonce)
{
$data = array(
'account' => $account,
'rand' => uniqid(),
'nonce' => $nonce,
'createtime' => myself()->_getNowTime(),
);
$data['sign'] = md5(TOKEN_SALT . $data['account'] . $data['rand'] . $data['nonce'] . $data['createtime']);
return base64_encode(json_encode($data));
}
private function isValidToken($account, $token)
{
$deToken = base64_decode($token);
if (empty($deToken)) {
return false;
}
if (empty($account)) {
return false;
}
$data = json_decode($deToken, true);
$sign = md5(TOKEN_SALT . $data['account'] . $data['rand'] . $data['nonce'] . $data['createtime']);
if ($sign == $data['sign']) {
return phpcommon\isSameAddress($data['account'], $account);
}
return false;
}
}

View File

@ -0,0 +1,46 @@
<?php
namespace services;
class MarketService extends BaseService {
const TOKEN_SALT = 'B8E6BD4F-FD7B-E2B8-6688-80A2D8632064';
public static function isValidToken($account, $token)
{
$deToken = base64_decode($token);
if (empty($deToken)) {
return false;
}
if (empty($account)) {
return false;
}
$data = json_decode($deToken, true);
$sign = md5(self::TOKEN_SALT .
$data['account'] .
$data['rand'] .
$data['nonce'] .
$data['createtime']);
if ($sign == $data['sign']) {
return phpcommon\isSameAddress($data['account'], $account);
}
return false;
}
public static function genToken($account, $nonce)
{
$data = array(
'account' => $account,
'rand' => uniqid(),
'nonce' => $nonce,
'createtime' => myself()->_getNowTime(),
);
$data['sign'] = md5(TOKEN_SALT .
$data['account'] .
$data['rand'] .
$data['nonce'] .
$data['createtime']);
return base64_encode(json_encode($data));
}
}