mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
Add hedera account page files and classes needed for this
This commit is contained in:
parent
f8c7d76530
commit
fc11929fc1
125
src/cpp/HTTPInterface/AdminHederaAccountPage.cpp
Normal file
125
src/cpp/HTTPInterface/AdminHederaAccountPage.cpp
Normal file
@ -0,0 +1,125 @@
|
||||
#include "AdminHederaAccountPage.h"
|
||||
#include "Poco/Net/HTTPServerRequest.h"
|
||||
#include "Poco/Net/HTTPServerResponse.h"
|
||||
#include "Poco/Net/HTMLForm.h"
|
||||
#include "Poco/DeflatingStream.h"
|
||||
|
||||
|
||||
#line 7 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
|
||||
#include "../controller/HederaAccount.h"
|
||||
#line 1 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp"
|
||||
|
||||
#include "../ServerConfig.h"
|
||||
|
||||
|
||||
AdminHederaAccountPage::AdminHederaAccountPage(Session* arg):
|
||||
SessionHTTPRequestHandler(arg)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
void AdminHederaAccountPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response)
|
||||
{
|
||||
response.setChunkedTransferEncoding(true);
|
||||
response.setContentType("text/html");
|
||||
bool _compressResponse(request.hasToken("Accept-Encoding", "gzip"));
|
||||
if (_compressResponse) response.set("Content-Encoding", "gzip");
|
||||
|
||||
Poco::Net::HTMLForm form(request, request.stream());
|
||||
#line 10 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
|
||||
const char* pageName = "Hedera Account";
|
||||
|
||||
// add
|
||||
if(!form.empty()) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
#line 3 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp"
|
||||
|
||||
bool withMaterialIcons = false;
|
||||
std::ostream& _responseStream = response.send();
|
||||
Poco::DeflatingOutputStream _gzipStream(_responseStream, Poco::DeflatingStreamBuf::STREAM_GZIP, 1);
|
||||
std::ostream& responseStream = _compressResponse ? _gzipStream : _responseStream;
|
||||
responseStream << "\n";
|
||||
// begin include header_large.cpsp
|
||||
responseStream << "\n";
|
||||
responseStream << "<!DOCTYPE html>\n";
|
||||
responseStream << "<html>\n";
|
||||
responseStream << "<head>\n";
|
||||
responseStream << "<meta charset=\"UTF-8\">\n";
|
||||
responseStream << "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n";
|
||||
responseStream << "<title>Gradido Login Server: ";
|
||||
#line 11 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp"
|
||||
responseStream << ( pageName );
|
||||
responseStream << "</title>\n";
|
||||
responseStream << "<link rel=\"stylesheet\" type=\"text/css\" href=\"";
|
||||
#line 12 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp"
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "css/main.css\">\n";
|
||||
#line 13 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp"
|
||||
if(withMaterialIcons) { responseStream << "\n";
|
||||
responseStream << "<link rel=\"stylesheet\" type=\"text/css\" href=\"";
|
||||
#line 14 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp"
|
||||
responseStream << ( ServerConfig::g_php_serverPath );
|
||||
responseStream << "css/materialdesignicons.min.css\">\n";
|
||||
#line 15 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header_large.cpsp"
|
||||
} responseStream << "\n";
|
||||
responseStream << "</head>\n";
|
||||
responseStream << "<body>\n";
|
||||
responseStream << " <div class=\"layout\">\n";
|
||||
responseStream << "\t\t<div class=\"content\">";
|
||||
// end include header_large.cpsp
|
||||
responseStream << "\n";
|
||||
#line 21 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( getErrorsHtml() );
|
||||
responseStream << "\n";
|
||||
responseStream << "<div class=\"center-form-container\">\n";
|
||||
responseStream << "\t<div class=\"center-form-title\">\n";
|
||||
responseStream << "\t <h3>Einen neuen Account anlegen</h3>\n";
|
||||
responseStream << "\t</div>\n";
|
||||
responseStream << "\t<div class=\"center-form-form\">\n";
|
||||
responseStream << "\t\t<form method=\"POST\">\n";
|
||||
responseStream << "\t\t\t<label class=\"form-label\">Hedera Account ID</label>\n";
|
||||
responseStream << "\t\t\t<input class=\"form-control\" id=\"account-shard-num\" type=\"number\" name=\"account-shard-num\"/>\n";
|
||||
responseStream << "\t\t\t<input class=\"form-control\" id=\"account-realm-num\" type=\"number\" name=\"account-realm-num\"/>\n";
|
||||
responseStream << "\t\t\t<input class=\"form-control\" id=\"account-num\" type=\"number\" name=\"account-num\"/>\n";
|
||||
responseStream << "\t\t\t<label class=\"form-label\" for=\"account-private-key\">Private Key</label>\n";
|
||||
responseStream << "\t\t\t<input class=\"form-control\" id=\"account-private-key\" type=\"text\" name=\"account-private-key\"/>\n";
|
||||
responseStream << "\t\t\t<label class=\"form-label\" for=\"account-public-key\">Public Key</label>\n";
|
||||
responseStream << "\t\t\t<input class=\"form-control\" id=\"account-public-key\" type=\"text\" name=\"account-public-key\"/>\n";
|
||||
responseStream << "\t\t\t<input class=\"center-form-submit form-button\" type=\"submit\" name=\"submit\" value=\"";
|
||||
#line 36 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\adminHederaAccount.cpsp"
|
||||
responseStream << ( gettext("Add Account") );
|
||||
responseStream << "\">\n";
|
||||
responseStream << "\t</form>\n";
|
||||
responseStream << "</div>\n";
|
||||
// begin include footer.cpsp
|
||||
responseStream << " <div class=\"center-bottom\">\n";
|
||||
responseStream << " <p>Copyright © Gradido 2020</p>\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " <div class=\"bottomleft\">\n";
|
||||
responseStream << " ";
|
||||
#line 6 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\footer.cpsp"
|
||||
responseStream << ( mTimeProfiler.string() );
|
||||
responseStream << "\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " <div class=\"bottomright\">\n";
|
||||
responseStream << " <p>Login Server in Entwicklung</p>\n";
|
||||
responseStream << " <p>Alpha ";
|
||||
#line 10 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\footer.cpsp"
|
||||
responseStream << ( ServerConfig::g_versionString );
|
||||
responseStream << "</p>\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << " </div>\n";
|
||||
responseStream << "</body>\n";
|
||||
responseStream << "\n";
|
||||
responseStream << "</html>";
|
||||
// end include footer.cpsp
|
||||
responseStream << "\n";
|
||||
if (_compressResponse) _gzipStream.close();
|
||||
}
|
||||
20
src/cpp/HTTPInterface/AdminHederaAccountPage.h
Normal file
20
src/cpp/HTTPInterface/AdminHederaAccountPage.h
Normal file
@ -0,0 +1,20 @@
|
||||
#ifndef AdminHederaAccountPage_INCLUDED
|
||||
#define AdminHederaAccountPage_INCLUDED
|
||||
|
||||
|
||||
#include "Poco/Net/HTTPRequestHandler.h"
|
||||
|
||||
|
||||
#include "SessionHTTPRequestHandler.h"
|
||||
|
||||
|
||||
class AdminHederaAccountPage: public SessionHTTPRequestHandler
|
||||
{
|
||||
public:
|
||||
AdminHederaAccountPage(Session*);
|
||||
|
||||
void handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response);
|
||||
};
|
||||
|
||||
|
||||
#endif // AdminHederaAccountPage_INCLUDED
|
||||
@ -28,6 +28,8 @@
|
||||
#include "AdminUserPasswordReset.h"
|
||||
#include "RegisterDirectPage.h"
|
||||
#include "AdminGroupsPage.h"
|
||||
#include "AdminTopicPage.h"
|
||||
#include "AdminHederaAccountPage.h"
|
||||
|
||||
#include "DecodeTransactionPage.h"
|
||||
#include "RepairDefectPassphrase.h"
|
||||
@ -212,6 +214,16 @@ Poco::Net::HTTPRequestHandler* PageRequestHandlerFactory::createRequestHandler(c
|
||||
pageRequestHandler->setProfiler(timeUsed);
|
||||
return pageRequestHandler;
|
||||
}
|
||||
if (url_first_part == "/topic") {
|
||||
auto pageRequestHandler = new AdminTopicPage(s);
|
||||
pageRequestHandler->setProfiler(timeUsed);
|
||||
return pageRequestHandler;
|
||||
}
|
||||
if (url_first_part == "/hedera_account") {
|
||||
auto pageRequestHandler = new AdminHederaAccountPage(s);
|
||||
pageRequestHandler->setProfiler(timeUsed);
|
||||
return pageRequestHandler;
|
||||
}
|
||||
}
|
||||
|
||||
if(url_first_part == "/logout") {
|
||||
|
||||
69
src/cpp/controller/HederaAccount.cpp
Normal file
69
src/cpp/controller/HederaAccount.cpp
Normal file
@ -0,0 +1,69 @@
|
||||
|
||||
#include "HederaAccount.h"
|
||||
|
||||
namespace controller {
|
||||
|
||||
HederaAccount::HederaAccount(model::table::HederaAccount* dbModel)
|
||||
{
|
||||
mDBModel = dbModel;
|
||||
}
|
||||
|
||||
HederaAccount::~HederaAccount()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
Poco::AutoPtr<HederaAccount> HederaAccount::create(int user_id, int account_hedera_id, int account_key_id, Poco::UInt64 balance/* = 0*/)
|
||||
{
|
||||
auto db = new model::table::HederaAccount(user_id, account_hedera_id, account_key_id, balance);
|
||||
auto group = new HederaAccount(db);
|
||||
return Poco::AutoPtr<HederaAccount>(group);
|
||||
}
|
||||
|
||||
std::vector<Poco::AutoPtr<HederaAccount>> HederaAccount::load(const std::string& alias)
|
||||
{
|
||||
auto db = new model::table::HederaAccount();
|
||||
auto group_list = db->loadFromDB<std::string, model::table::HederaAccountTuple>("alias", alias, 0);
|
||||
|
||||
std::vector<Poco::AutoPtr<HederaAccount>> resultVector;
|
||||
resultVector.reserve(group_list.size());
|
||||
for (auto it = group_list.begin(); it != group_list.end(); it++) {
|
||||
resultVector.push_back(new HederaAccount(new model::table::HederaAccount(*it)));
|
||||
}
|
||||
return resultVector;
|
||||
}
|
||||
|
||||
std::vector<Poco::AutoPtr<HederaAccount>> HederaAccount::listAll()
|
||||
{
|
||||
auto db = new model::table::HederaAccount();
|
||||
std::vector<model::table::HederaAccountTuple> group_list;
|
||||
// throw an unresolved external symbol error
|
||||
//group_list = db->loadAllFromDB<model::table::GroupTuple>();
|
||||
|
||||
// work around for not working call to loadAllFromDB
|
||||
auto cm = ConnectionManager::getInstance();
|
||||
Poco::Data::Statement select(cm->getConnection(CONNECTION_MYSQL_LOGIN_SERVER));
|
||||
|
||||
select << "SELECT id, alias, name, url, description FROM " << db->getTableName()
|
||||
, Poco::Data::Keywords::into(group_list);
|
||||
|
||||
size_t resultCount = 0;
|
||||
try {
|
||||
resultCount = select.execute();
|
||||
}
|
||||
catch (Poco::Exception& ex) {
|
||||
printf("[Group::listAll] poco exception: %s\n", ex.displayText().data());
|
||||
}
|
||||
// work around end
|
||||
std::vector<Poco::AutoPtr<HederaAccount>> resultVector;
|
||||
|
||||
resultVector.reserve(group_list.size());
|
||||
for (auto it = group_list.begin(); it != group_list.end(); it++) {
|
||||
Poco::AutoPtr<HederaAccount> group_ptr(new HederaAccount(new model::table::HederaAccount(*it)));
|
||||
resultVector.push_back(group_ptr);
|
||||
}
|
||||
return resultVector;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
33
src/cpp/controller/HederaAccount.h
Normal file
33
src/cpp/controller/HederaAccount.h
Normal file
@ -0,0 +1,33 @@
|
||||
#ifndef GRADIDO_LOGIN_SERVER_CONTROLLER_HEDERA_ACCOUNT_INCLUDE
|
||||
#define GRADIDO_LOGIN_SERVER_CONTROLLER_HEDERA_ACCOUNT_INCLUDE
|
||||
|
||||
#include "../model/table/HederaAccount.h"
|
||||
|
||||
#include "Poco/SharedPtr.h"
|
||||
|
||||
#include "TableControllerBase.h"
|
||||
|
||||
namespace controller {
|
||||
class HederaAccount : public TableControllerBase
|
||||
{
|
||||
public:
|
||||
|
||||
~HederaAccount();
|
||||
|
||||
static Poco::AutoPtr<HederaAccount> create(int user_id, int account_hedera_id, int account_key_id, Poco::UInt64 balance = 0);
|
||||
|
||||
static std::vector<Poco::AutoPtr<HederaAccount>> load(const std::string& alias);
|
||||
static std::vector<Poco::AutoPtr<HederaAccount>> listAll();
|
||||
|
||||
inline bool deleteFromDB() { return mDBModel->deleteFromDB(); }
|
||||
|
||||
inline Poco::AutoPtr<model::table::HederaAccount> getModel() { return _getModel<model::table::HederaAccount>(); }
|
||||
|
||||
|
||||
protected:
|
||||
HederaAccount(model::table::HederaAccount* dbModel);
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
#endif //GRADIDO_LOGIN_SERVER_CONTROLLER_HEDERA_ACCOUNT_INCLUDE
|
||||
@ -8,8 +8,8 @@ namespace model {
|
||||
namespace table {
|
||||
|
||||
enum KeyType {
|
||||
KEY_TYPE_SODIUM_ED25519,
|
||||
KEY_TYPE_ED25519_REF10,
|
||||
KEY_TYPE_SODIUM_ED25519 = 0,
|
||||
KEY_TYPE_ED25519_REF10 = 1,
|
||||
KEY_TYPE_COUNT
|
||||
};
|
||||
|
||||
|
||||
@ -6,6 +6,20 @@ namespace model {
|
||||
namespace table {
|
||||
|
||||
HederaAccount::HederaAccount()
|
||||
: mUserId(0), mAccountHederaId(0), mAccountKeyId(0), mBalance(0)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
HederaAccount::HederaAccount(int user_id, int account_hedera_id, int account_key_id, Poco::UInt64 balance/* = 0*/)
|
||||
: mUserId(user_id), mAccountHederaId(account_hedera_id), mAccountKeyId(account_key_id), mBalance(balance)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
HederaAccount::HederaAccount(const HederaAccountTuple& tuple)
|
||||
: ModelBase(tuple.get<0>()),
|
||||
mUserId(tuple.get<1>()), mAccountHederaId(tuple.get<2>()), mAccountKeyId(tuple.get<3>()), mBalance(tuple.get<4>()), mUpdated(tuple.get<5>())
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@ -7,12 +7,14 @@
|
||||
namespace model {
|
||||
namespace table {
|
||||
|
||||
typedef Poco::Tuple<int, int, int, Poco::UInt64, Poco::DateTime> HederaAccountsTuple;
|
||||
typedef Poco::Tuple<int, int, int, int, Poco::UInt64, Poco::DateTime> HederaAccountTuple;
|
||||
|
||||
class HederaAccount : public ModelBase
|
||||
{
|
||||
public:
|
||||
HederaAccount();
|
||||
HederaAccount(int user_id, int account_hedera_id, int account_key_id, Poco::UInt64 balance = 0);
|
||||
HederaAccount(const HederaAccountTuple& tuple);
|
||||
~HederaAccount();
|
||||
|
||||
// generic db operations
|
||||
|
||||
23
src/cpsp/adminTopic.cpsp
Normal file
23
src/cpsp/adminTopic.cpsp
Normal file
@ -0,0 +1,23 @@
|
||||
<%@ page class="AdminTopicPage" %>
|
||||
<%@ page form="true" %>
|
||||
<%@ page compressed="true" %>
|
||||
<%@ page baseClass="SessionHTTPRequestHandler" %>
|
||||
<%@ page ctorArg="Session*" %>
|
||||
<%@ header include="SessionHTTPRequestHandler.h" %>
|
||||
<%!
|
||||
|
||||
%>
|
||||
<%%
|
||||
const char* pageName = "Topic";
|
||||
|
||||
|
||||
|
||||
%><%@ include file="header_large.cpsp" %>
|
||||
<%= getErrorsHtml() %>
|
||||
<div class="content-container info-container">
|
||||
<h1>Topic Admin Page</h1>
|
||||
</div>
|
||||
<div class="content-container main-container">
|
||||
|
||||
</div>
|
||||
<%@ include file="footer.cpsp" %>
|
||||
19
src/cpsp/header_large.cpsp
Normal file
19
src/cpsp/header_large.cpsp
Normal file
@ -0,0 +1,19 @@
|
||||
<%!
|
||||
#include "../ServerConfig.h"
|
||||
%><%%
|
||||
bool withMaterialIcons = false;
|
||||
%>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<title>Gradido Login Server: <%= pageName %></title>
|
||||
<link rel="stylesheet" type="text/css" href="<%= ServerConfig::g_php_serverPath %>css/main.css">
|
||||
<% if(withMaterialIcons) { %>
|
||||
<link rel="stylesheet" type="text/css" href="<%= ServerConfig::g_php_serverPath %>css/materialdesignicons.min.css">
|
||||
<% } %>
|
||||
</head>
|
||||
<body>
|
||||
<div class="layout">
|
||||
<div class="content">
|
||||
Loading…
x
Reference in New Issue
Block a user