diff --git a/community_server/src/Controller/AppRequestsController.php b/community_server/src/Controller/AppRequestsController.php index 12ea77d0b..4d70a68b1 100644 --- a/community_server/src/Controller/AppRequestsController.php +++ b/community_server/src/Controller/AppRequestsController.php @@ -156,6 +156,9 @@ class AppRequestsController extends AppController if($required_fields !== true) { return $this->returnJson($required_fields); } + if(!isset($params['memo']) || strlen($params['memo']) < 5 || strlen($params['memo']) > 150) { + return $this->returnJson(['state' => 'error', 'msg' => 'memo is not set or not in expected range [5;150]']); + } $params['transaction_type'] = 'transfer'; $requestAnswear = $this->JsonRequestClient->sendRequest(json_encode($params), '/createTransaction'); diff --git a/community_server/src/Controller/TransactionSendCoinsController.php b/community_server/src/Controller/TransactionSendCoinsController.php index 033e2343f..1018309cc 100644 --- a/community_server/src/Controller/TransactionSendCoinsController.php +++ b/community_server/src/Controller/TransactionSendCoinsController.php @@ -237,6 +237,11 @@ class TransactionSendCoinsController extends AppController $this->set('timeUsed', microtime(true) - $startTime); return; } + if($answear_data['msg'] === 'memo is not set or not in expected range [5;150]') { + $this->Flash->error(__('Ein Verwendungszweck zwischen 5 und 150 Zeichen wird benötig!')); + $this->set('timeUsed', microtime(true) - $startTime); + return; + } } else if($answear_data['state'] === 'not found' && $answear_data['msg'] === 'receiver not found') { $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); diff --git a/frontend/src/views/Pages/AccountOverview/GddSend/TransactionForm.vue b/frontend/src/views/Pages/AccountOverview/GddSend/TransactionForm.vue index 55d38be22..3a38d49db 100644 --- a/frontend/src/views/Pages/AccountOverview/GddSend/TransactionForm.vue +++ b/frontend/src/views/Pages/AccountOverview/GddSend/TransactionForm.vue @@ -84,7 +84,22 @@ style="font-size: xx-large; padding-left: 20px" > - {{ $t('form.memo') }} + + + + {{ $t('form.memo') }} + + {{ error }} + + diff --git a/login_server/src/cpp/JSONInterface/JsonCreateTransaction.cpp b/login_server/src/cpp/JSONInterface/JsonCreateTransaction.cpp index 786af9d71..7fb40913e 100644 --- a/login_server/src/cpp/JSONInterface/JsonCreateTransaction.cpp +++ b/login_server/src/cpp/JSONInterface/JsonCreateTransaction.cpp @@ -108,6 +108,9 @@ Poco::JSON::Object* JsonCreateTransaction::transfer(Poco::Dynamic::Var params) else { result = stateError("parameter format unknown"); } + if (mMemo.size() < 5 || mMemo.size() > 150) { + result = stateError("memo is not set or not in expected range [5;150]"); + } if (result) { mm->releaseMemory(target_pubkey); return result; diff --git a/login_server/src/cpp/model/gradido/TransactionBase.h b/login_server/src/cpp/model/gradido/TransactionBase.h index 6a82b2a28..9f5a87d85 100644 --- a/login_server/src/cpp/model/gradido/TransactionBase.h +++ b/login_server/src/cpp/model/gradido/TransactionBase.h @@ -31,7 +31,8 @@ namespace model { TRANSACTION_VALID_INVALID_AMOUNT, TRANSACTION_VALID_INVALID_PUBKEY, TRANSACTION_VALID_INVALID_GROUP_ALIAS, - TRANSACTION_VALID_INVALID_SIGN + TRANSACTION_VALID_INVALID_SIGN, + TRANSACTION_VALID_INVALID_MEMO }; const char* TransactionValidationToString(TransactionValidation result); diff --git a/login_server/src/cpp/model/gradido/TransactionTransfer.cpp b/login_server/src/cpp/model/gradido/TransactionTransfer.cpp index 759d79690..ef0d3a3f6 100644 --- a/login_server/src/cpp/model/gradido/TransactionTransfer.cpp +++ b/login_server/src/cpp/model/gradido/TransactionTransfer.cpp @@ -186,6 +186,10 @@ namespace model { addError(new Error(function_name, "sender and receiver are the same")); return TRANSACTION_VALID_INVALID_PUBKEY; } + if (mMemo.size() < 5 || mMemo.size() > 150) { + addError(new Error(function_name, "memo is not set or not in expected range [5;150]")); + return TRANSACTION_VALID_INVALID_MEMO; + } return TRANSACTION_VALID_OK; }