From 5cb007857af1bb38a45cc5cf7d9ea8a572416aeb Mon Sep 17 00:00:00 2001 From: Dario Rekowski on RockPI Date: Fri, 3 Apr 2020 14:06:47 +0000 Subject: [PATCH] change send coins to get pubkey from login server --- src/Controller/AppController.php | 4 +- .../TransactionSendCoinsController.php | 43 +++++++++++++------ 2 files changed, 32 insertions(+), 15 deletions(-) diff --git a/src/Controller/AppController.php b/src/Controller/AppController.php index d0eeb7d7a..3ba3c9ba9 100644 --- a/src/Controller/AppController.php +++ b/src/Controller/AppController.php @@ -250,7 +250,7 @@ class AppController extends Controller } */ - public function addAdminError($controller, $action, $returnTable, $state_user_id) { + public function addAdminError($controller, $action, array $returnTable, $state_user_id) { if(!is_array($returnTable)) { $this->addAdminError('AppController', 'addAdminError', ['state' => 'error', 'msg' => 'returnTable isn\'t array', 'details' => gettype($returnTable)]); return false; @@ -260,7 +260,7 @@ class AppController extends Controller $adminErrorEntity->state_user_id = $state_user_id; $adminErrorEntity->controller = $controller; $adminErrorEntity->action = $action; - $adminErrorEntity->state = $returnTable->state; + $adminErrorEntity->state = $returnTable['state']; if(isset($returnTable['msg'])) { $adminErrorEntity->msg = $returnTable['msg']; } diff --git a/src/Controller/TransactionSendCoinsController.php b/src/Controller/TransactionSendCoinsController.php index cffa7e2fd..de278b55e 100644 --- a/src/Controller/TransactionSendCoinsController.php +++ b/src/Controller/TransactionSendCoinsController.php @@ -30,6 +30,7 @@ class TransactionSendCoinsController extends AppController { parent::initialize(); $this->loadComponent('GradidoNumber'); + $this->loadComponent('JsonRequestClient'); //$this->Auth->allow(['add', 'edit']); $this->Auth->allow('create'); $this->Auth->allow('createRaw'); @@ -162,19 +163,35 @@ class TransactionSendCoinsController extends AppController $this->Flash->error(__('Du kannst dir leider nicht selbst Geld schicken!')); return; } - - $stateUserTable = TableRegistry::getTableLocator()->get('StateUsers'); - $receiverUser = $stateUserTable - ->find('all') - ->select(['public_key']) - ->contain(false) - ->where(['email' => $receiverEmail])->first(); - //var_dump($receiverUser); - if(!$receiverUser) { - $this->Flash->error(__('Diese E-Mail ist mir nicht bekannt, hat dein Empfänger denn schon ein Gradido-Konto?')); - return; + $receiverPubkeyHex =''; + $requestAnswear = $this->JsonRequestClient->sendRequest(json_encode([ + 'session_id' => $session->read('session_id'), + 'email' => $receiverEmail, + 'ask' => ['user.pubkeyhex'] + ]), '/getUserInfos'); + if('success' == $requestAnswear['state'] && 'success' == $requestAnswear['data']['state']) { + $receiverPubKeyHex = $requestAnswear['data']['userData']['pubkeyhex']; + } else { + $this->addAdminError('TransactionSendCoins', 'create', $requestAnswear, $user['id']); + $this->Flash->error(__('Der Empfänger wurde nicht auf dem Login-Server gefunden, hat er sein Konto schon angelegt?')); + $this->set('timeUsed', microtime(true) - $startTime); + return; + } + if('' == $receiverPubKeyHex) { + $stateUserTable = TableRegistry::getTableLocator()->get('StateUsers'); + $receiverUser = $stateUserTable + ->find('all') + ->select(['public_key']) + ->contain(false) + ->where(['email' => $receiverEmail])->first(); + //var_dump($receiverUser); + if(!$receiverUser) { + $this->Flash->error(__('Diese E-Mail ist mir nicht bekannt, hat dein Empfänger denn schon ein Gradido-Konto?')); + $this->set('timeUsed', microtime(true) - $startTime); + return; + } + $receiverPubKeyHex = bin2hex(stream_get_contents($receiverUser->public_key)); } - $receiverPubKeyHex = bin2hex(stream_get_contents($receiverUser->public_key)); //var_dump($sessionStateUser); $builderResult = TransactionTransfer::build( @@ -234,7 +251,7 @@ class TransactionSendCoinsController extends AppController } } else { - $this->Flash->error(__('No Valid Receiver Public given')); + $this->Flash->error(__('No Valid Receiver Public given: ' . $receiverPubKeyHex)); } // */