Committing updates.
This commit is contained in:
@@ -1,19 +1,86 @@
|
|||||||
{
|
{
|
||||||
"web": {
|
"web": {
|
||||||
"issuers": ["accounts.bitdeals.com"],
|
"issuers": ["accounts.bitdeals.org"],
|
||||||
"scopes": ["api","openid","profile","email"],
|
"scopes": ["bitdeals"],
|
||||||
"client_id": "web-bitdeals.com",
|
"client_id": "web-bitdeals.org",
|
||||||
"client_secret": "",
|
"client_secret": "4aJEJi3dsSypeUSRCah4gIIs",
|
||||||
"algorithm": "HS256",
|
"algorithm": "HS256",
|
||||||
"auth_uri": "/oauth2/authorize",
|
"auth_uri": "/oauth2/authorize",
|
||||||
"token_uri": "/oauth2/token",
|
"token_uri": "/oauth2/token",
|
||||||
"redirect_uris": [
|
"redirect_uris": [
|
||||||
"http://localhost:8080/oauth2/code",
|
"http://localhost:4977/oauth2/code",
|
||||||
"http://localhost:8080/oauth2/callback",
|
"http://localhost:4977/dashboard/",
|
||||||
"https://bitdeals.com/oauth2/code",
|
"http://localhost:4999/oauth2/code",
|
||||||
"https://bitdeals.com/oauth2/callback",
|
"http://localhost:4999/dashboard/",
|
||||||
"https://oauthdebugger.com/debug",
|
"http://65.21.101.151/oauth2/code",
|
||||||
"https://auth.advancedrestclient.com/oauth-popup.html"
|
"http://65.21.101.151/dashboard",
|
||||||
|
"https://oauthdebugger.com/debug"
|
||||||
|
],
|
||||||
|
"javascript_origins": [
|
||||||
|
"http://localhost:4977",
|
||||||
|
"http://localhost:4999",
|
||||||
|
"http://65.21.101.151"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"service": {
|
||||||
|
"issuers": ["accounts.bitdeals.org"],
|
||||||
|
"scopes": ["bitdeals"],
|
||||||
|
"client_id": "service-bitdeals.org",
|
||||||
|
"client_secret": "TjcILDtLa06YABJnepcVM32O",
|
||||||
|
"algorithm": "HS256",
|
||||||
|
"auth_uri": "/oauth2/authorize",
|
||||||
|
"token_uri": "/oauth2/token",
|
||||||
|
"redirect_uris": [
|
||||||
|
"http://localhost:4977/dashboard",
|
||||||
|
"http://65.21.101.151/dashboard",
|
||||||
|
"https://oauthdebugger.com/debug"
|
||||||
|
],
|
||||||
|
"javascript_origins": [
|
||||||
|
"http://localhost:4977",
|
||||||
|
"http://65.21.101.151"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"module": {
|
||||||
|
"issuers": ["accounts.bitdeals.org"],
|
||||||
|
"scopes": ["bitdeals"],
|
||||||
|
"client_id": "dm-bitdeals.org",
|
||||||
|
"client_secret": "TypQHP4TK44khO3cvOyuHYg3",
|
||||||
|
"algorithm": "HS256",
|
||||||
|
"auth_uri": "/oauth2/authorize",
|
||||||
|
"token_uri": "/oauth2/token",
|
||||||
|
"redirect_uris": [
|
||||||
|
"http://localhost:4977/oauth2/code",
|
||||||
|
"http://localhost:4999/dashboard/",
|
||||||
|
"https://oauthdebugger.com/debug"
|
||||||
|
],
|
||||||
|
"javascript_origins": [
|
||||||
|
"http://localhost:4999"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"android": {
|
||||||
|
"issuers": ["accounts.bitdeals.org"],
|
||||||
|
"scopes": ["bitdeals"],
|
||||||
|
"client_id": "android-bitdeals.org",
|
||||||
|
"client_secret": "HaBAde09xWKb29NizXZfIMpl",
|
||||||
|
"algorithm": "HS256",
|
||||||
|
"auth_uri": "/oauth2/authorize",
|
||||||
|
"token_uri": "/oauth2/token",
|
||||||
|
"redirect_uris": [
|
||||||
|
"http://127.0.0.1/oauth2/code",
|
||||||
|
"http://127.0.0.1/oauth2/callback"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"ios": {
|
||||||
|
"issuers": ["accounts.bitdeals.org"],
|
||||||
|
"scopes": ["bitdeals"],
|
||||||
|
"client_id": "ios-bitdeals.org",
|
||||||
|
"client_secret": "kWqJivDfaR7vbzkZz07zi7DO",
|
||||||
|
"algorithm": "HS256",
|
||||||
|
"auth_uri": "/oauth2/authorize",
|
||||||
|
"token_uri": "/oauth2/token",
|
||||||
|
"redirect_uris": [
|
||||||
|
"http://127.0.0.1/oauth2/code",
|
||||||
|
"http://127.0.0.1/oauth2/callback"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
10
conf/oauth2/service.json
Normal file
10
conf/oauth2/service.json
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"type": "service_account",
|
||||||
|
"issuers": ["accounts.bitdeals.org"],
|
||||||
|
"scopes": ["bitdeals"],
|
||||||
|
"client_id": "dm-bitdeals.org",
|
||||||
|
"client_secret": "TypQHP4TK44khO3cvOyuHYg3",
|
||||||
|
"algorithm": "HS256",
|
||||||
|
"auth_uri": "/oauth2/authorize",
|
||||||
|
"token_uri": "/oauth2/token"
|
||||||
|
}
|
||||||
2
src/core
2
src/core
Submodule src/core updated: a748414372...b3aab68ceb
@@ -582,7 +582,6 @@ namespace Apostol {
|
|||||||
|
|
||||||
const auto& caModuleAddress = Config()->IniFile().ReadString("module", "address", "");
|
const auto& caModuleAddress = Config()->IniFile().ReadString("module", "address", "");
|
||||||
|
|
||||||
const auto& caAuthorization = pServerRequest->Headers["authorization"];
|
|
||||||
const auto& caOrigin = pServerRequest->Headers["origin"];
|
const auto& caOrigin = pServerRequest->Headers["origin"];
|
||||||
const auto& caUserAddress = pServerRequest->Params["address"];
|
const auto& caUserAddress = pServerRequest->Params["address"];
|
||||||
|
|
||||||
@@ -787,8 +786,7 @@ namespace Apostol {
|
|||||||
|
|
||||||
CHTTPRequest::Prepare(pProxyRequest, Method.c_str(), URI.c_str());
|
CHTTPRequest::Prepare(pProxyRequest, Method.c_str(), URI.c_str());
|
||||||
|
|
||||||
if (!caAuthorization.IsEmpty())
|
pProxyRequest->AddHeader("Authorization", "Bearer " + m_Tokens[SYSTEM_PROVIDER_NAME]["access_token"]);
|
||||||
pProxyRequest->AddHeader("Authorization", caAuthorization);
|
|
||||||
|
|
||||||
if (!caModuleAddress.IsEmpty())
|
if (!caModuleAddress.IsEmpty())
|
||||||
pProxyRequest->AddHeader("Module-Address", caModuleAddress);
|
pProxyRequest->AddHeader("Module-Address", caModuleAddress);
|
||||||
@@ -875,7 +873,6 @@ namespace Apostol {
|
|||||||
if (checkFee == -1)
|
if (checkFee == -1)
|
||||||
throw ExceptionFrm("Invalid module fee value: %s", caModuleFee.c_str());
|
throw ExceptionFrm("Invalid module fee value: %s", caModuleFee.c_str());
|
||||||
|
|
||||||
const auto& caAuthorization = pServerRequest->Headers["authorization"];
|
|
||||||
const auto& caOrigin = pServerRequest->Headers["origin"];
|
const auto& caOrigin = pServerRequest->Headers["origin"];
|
||||||
const auto& caUserAddress = pServerRequest->Params["address"];
|
const auto& caUserAddress = pServerRequest->Params["address"];
|
||||||
|
|
||||||
@@ -1244,8 +1241,7 @@ namespace Apostol {
|
|||||||
|
|
||||||
CHTTPRequest::Prepare(pProxyRequest, Method.c_str(), URI.c_str());
|
CHTTPRequest::Prepare(pProxyRequest, Method.c_str(), URI.c_str());
|
||||||
|
|
||||||
if (!caAuthorization.IsEmpty())
|
pProxyRequest->AddHeader("Authorization", "Bearer " + m_Tokens[SYSTEM_PROVIDER_NAME]["access_token"]);
|
||||||
pProxyRequest->AddHeader("Authorization", caAuthorization);
|
|
||||||
|
|
||||||
if (!caModuleAddress.IsEmpty())
|
if (!caModuleAddress.IsEmpty())
|
||||||
pProxyRequest->AddHeader("Module-Address", caModuleAddress);
|
pProxyRequest->AddHeader("Module-Address", caModuleAddress);
|
||||||
@@ -1628,7 +1624,7 @@ namespace Apostol {
|
|||||||
PGP.StatusTime = Now();
|
PGP.StatusTime = Now();
|
||||||
PGP.Status = CKeyContext::ksFetching;
|
PGP.Status = CKeyContext::ksFetching;
|
||||||
|
|
||||||
CHTTPRequest::Prepare(ARequest, "GET", CString().Format("/api/v1/key/public?account=%s", PGP.Name.c_str()).c_str());
|
CHTTPRequest::Prepare(ARequest, "GET", CString().Format("/api/v1/key/public?account=%s&type=pgp", PGP.Name.c_str()).c_str());
|
||||||
|
|
||||||
ARequest->AddHeader("Authorization", "Bearer " + m_Tokens[SYSTEM_PROVIDER_NAME]["access_token"]);
|
ARequest->AddHeader("Authorization", "Bearer " + m_Tokens[SYSTEM_PROVIDER_NAME]["access_token"]);
|
||||||
};
|
};
|
||||||
@@ -1702,15 +1698,16 @@ namespace Apostol {
|
|||||||
|
|
||||||
const auto& caServerContext = CurrentServer().Value();
|
const auto& caServerContext = CurrentServer().Value();
|
||||||
|
|
||||||
Log()->Debug(0, "Trying to fetch a BTC KEY%d from: %s", m_KeyIndex + 1, caServerContext.URI.c_str());
|
Log()->Debug(0, "Trying to fetch a BTC key \"%s\" from: %s", BTC.Name.c_str(), caServerContext.URI.c_str());
|
||||||
|
|
||||||
auto OnRequest = [this, &BTC](CHTTPClient *Sender, CHTTPRequest *ARequest) {
|
auto OnRequest = [this, &BTC](CHTTPClient *Sender, CHTTPRequest *ARequest) {
|
||||||
const auto& caServerContext = CurrentServer().Value();
|
const auto& caServerContext = CurrentServer().Value();
|
||||||
BTC.StatusTime = Now();
|
BTC.StatusTime = Now();
|
||||||
BTC.Status = CKeyContext::ksFetching;
|
BTC.Status = CKeyContext::ksFetching;
|
||||||
CString URI("/api/v1/key?type=BTC-PUBLIC&name=KEY");
|
|
||||||
URI << m_KeyIndex + 1;
|
CHTTPRequest::Prepare(ARequest, "GET", CString().Format("/api/v1/key/public?account=%s&type=btc", BTC.Name.c_str()).c_str());
|
||||||
CHTTPRequest::Prepare(ARequest, "GET", URI.c_str());
|
|
||||||
|
ARequest->AddHeader("Authorization", "Bearer " + m_Tokens[SYSTEM_PROVIDER_NAME]["access_token"]);
|
||||||
};
|
};
|
||||||
|
|
||||||
auto OnExecute = [this, &BTC](CTCPConnection *AConnection) {
|
auto OnExecute = [this, &BTC](CTCPConnection *AConnection) {
|
||||||
@@ -1771,6 +1768,7 @@ namespace Apostol {
|
|||||||
void CWebService::Reload() {
|
void CWebService::Reload() {
|
||||||
|
|
||||||
m_Providers.Clear();
|
m_Providers.Clear();
|
||||||
|
m_Tokens.Clear();
|
||||||
|
|
||||||
const auto &oauth2 = Config()->IniFile().ReadString(CONFIG_SECTION_NAME, "oauth2", "oauth2/service.json");
|
const auto &oauth2 = Config()->IniFile().ReadString(CONFIG_SECTION_NAME, "oauth2", "oauth2/service.json");
|
||||||
const auto &provider = CString(SYSTEM_PROVIDER_NAME);
|
const auto &provider = CString(SYSTEM_PROVIDER_NAME);
|
||||||
@@ -1802,15 +1800,13 @@ namespace Apostol {
|
|||||||
|
|
||||||
if (m_Servers.Count() == 0) {
|
if (m_Servers.Count() == 0) {
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
int Index = m_Servers.AddPair("BM-2cXtL92m3CavBKx8qsV2LbZtAU3eQxW2rB", CServerContext("http://localhost:4988"));
|
int Index = m_Servers.AddPair(BPS_BM_DEBUG_ADDRESS, CServerContext(BPS_SERVER_URL));
|
||||||
m_Servers[Index].Value().PGP.Name = m_Servers[Index].Name();
|
m_Servers[Index].Value().PGP.Name = m_Servers[Index].Name();
|
||||||
#else
|
#else
|
||||||
m_Servers.Add(m_DefaultServer);
|
m_Servers.Add(m_DefaultServer);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// const auto& caServer = CurrentServer().Value();
|
|
||||||
|
|
||||||
if (m_Status == psRunning) {
|
if (m_Status == psRunning) {
|
||||||
if (now >= m_RandomDate) {
|
if (now >= m_RandomDate) {
|
||||||
FetchKeys();
|
FetchKeys();
|
||||||
|
|||||||
@@ -26,8 +26,9 @@ Author:
|
|||||||
//----------------------------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------------------------
|
||||||
#define BPS_DEFAULT_SYNC_PERIOD 30
|
#define BPS_DEFAULT_SYNC_PERIOD 30
|
||||||
#define BPS_SERVER_PORT 4988
|
#define BPS_SERVER_PORT 4988
|
||||||
#define BPS_SERVER_URL "http://65.21.101.151:4988"
|
#define BPS_SERVER_URL "http://localhost:4988"
|
||||||
#define BPS_BM_SERVER_ADDRESS "BM-2cX8y9u9yEi3fdqQfndx9F6NdR5Hv79add"
|
#define BPS_BM_SERVER_ADDRESS "BM-2cX8y9u9yEi3fdqQfndx9F6NdR5Hv79add"
|
||||||
|
#define BPS_BM_DEBUG_ADDRESS "BM-2cXtL92m3CavBKx8qsV2LbZtAU3eQxW2rB"
|
||||||
//----------------------------------------------------------------------------------------------------------------------
|
//----------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
extern "C++" {
|
extern "C++" {
|
||||||
@@ -51,7 +52,7 @@ namespace Apostol {
|
|||||||
CDateTime StatusTime;
|
CDateTime StatusTime;
|
||||||
|
|
||||||
CKeyContext(): Status(ksUnknown), StatusTime(Now()) {
|
CKeyContext(): Status(ksUnknown), StatusTime(Now()) {
|
||||||
Name = "DEFAULT";
|
Name = BPS_BM_SERVER_ADDRESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
CKeyContext(const CString& Name, const CString& Key): CKeyContext() {
|
CKeyContext(const CString& Name, const CString& Key): CKeyContext() {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en" xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html">
|
<html lang="ru" xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html">
|
||||||
<head>
|
<head>
|
||||||
<!-- Required meta tags -->
|
<!-- Required meta tags -->
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
@@ -44,7 +44,6 @@
|
|||||||
<a class="nav-link dropdown-toggle" href="#" id="btnSettings" data-toggle="dropdown" role="tab" aria-haspopup="true" aria-expanded="false">Other</a>
|
<a class="nav-link dropdown-toggle" href="#" id="btnSettings" data-toggle="dropdown" role="tab" aria-haspopup="true" aria-expanded="false">Other</a>
|
||||||
<div class="dropdown-menu" aria-labelledby="other">
|
<div class="dropdown-menu" aria-labelledby="other">
|
||||||
<a class="dropdown-item" data-toggle="tab" href="#tab-config">Settings</a>
|
<a class="dropdown-item" data-toggle="tab" href="#tab-config">Settings</a>
|
||||||
<a class="dropdown-item" onclick="SignOut()">Log out</a>
|
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
@@ -621,159 +620,6 @@
|
|||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
|
|
||||||
let token;
|
|
||||||
|
|
||||||
function parseJWT(token) {
|
|
||||||
try {
|
|
||||||
// Get Token Header
|
|
||||||
const base64HeaderUrl = token.split('.')[0];
|
|
||||||
const base64Header = base64HeaderUrl.replace('-', '+').replace('_', '/');
|
|
||||||
const headerData = JSON.parse(window.atob(base64Header));
|
|
||||||
|
|
||||||
// Get Token payload and date's
|
|
||||||
const base64Url = token.split('.')[1];
|
|
||||||
const base64 = base64Url.replace('-', '+').replace('_', '/');
|
|
||||||
const dataJWT = JSON.parse(window.atob(base64));
|
|
||||||
|
|
||||||
dataJWT.header = headerData;
|
|
||||||
|
|
||||||
// TODO: add expiration at check ...
|
|
||||||
|
|
||||||
return dataJWT;
|
|
||||||
} catch (err) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class Token {
|
|
||||||
|
|
||||||
constructor(clientId, accessName, refreshName) {
|
|
||||||
this.clientId = clientId;
|
|
||||||
this.accessName = accessName;
|
|
||||||
this.refreshName = refreshName;
|
|
||||||
}
|
|
||||||
|
|
||||||
save(accessToken, refreshToken) {
|
|
||||||
let success = false;
|
|
||||||
|
|
||||||
if (!empty(accessToken)) {
|
|
||||||
localStorage.setItem(this.accessName, accessToken);
|
|
||||||
success = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!empty(refreshToken)) {
|
|
||||||
localStorage.setItem(this.refreshName, refreshToken);
|
|
||||||
success = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return success;
|
|
||||||
}
|
|
||||||
|
|
||||||
getAccess() {
|
|
||||||
return localStorage.getItem(this.accessName);
|
|
||||||
}
|
|
||||||
|
|
||||||
getRefresh() {
|
|
||||||
return localStorage.getItem(this.refreshName);
|
|
||||||
}
|
|
||||||
|
|
||||||
clear() {
|
|
||||||
localStorage.removeItem(this.accessName);
|
|
||||||
localStorage.removeItem(this.refreshName);
|
|
||||||
}
|
|
||||||
|
|
||||||
parse(hash) {
|
|
||||||
if (empty(hash))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
const search = hash.substr(1);
|
|
||||||
|
|
||||||
let params = new URLSearchParams(search);
|
|
||||||
|
|
||||||
let access_token = params.get("access_token");
|
|
||||||
let refresh_token = decodeURIComponent(params.get("refresh_token"));
|
|
||||||
|
|
||||||
return this.save(access_token, refresh_token);
|
|
||||||
}
|
|
||||||
|
|
||||||
async new() {
|
|
||||||
const body = {
|
|
||||||
client_id: this.clientId,
|
|
||||||
grant_type: 'client_credentials',
|
|
||||||
}
|
|
||||||
|
|
||||||
return await this.fetchToken(body);
|
|
||||||
}
|
|
||||||
|
|
||||||
async refresh() {
|
|
||||||
const refreshToken = this.getRefresh();
|
|
||||||
|
|
||||||
if (empty(refreshToken))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
const body = {
|
|
||||||
client_id: this.clientId,
|
|
||||||
grant_type: 'refresh_token',
|
|
||||||
refresh_token: refreshToken
|
|
||||||
}
|
|
||||||
|
|
||||||
return await this.fetchToken(body);
|
|
||||||
}
|
|
||||||
|
|
||||||
async fetchToken(body) {
|
|
||||||
const server = $("input[id='serverURL']").val();
|
|
||||||
|
|
||||||
const response = await fetch(`${server}/oauth2/token`, {
|
|
||||||
method: 'POST',
|
|
||||||
headers: {'Content-Type': 'application/json'},
|
|
||||||
body: JSON.stringify(body),
|
|
||||||
mode: "cors",
|
|
||||||
cache: "no-store",
|
|
||||||
credentials: 'omit'
|
|
||||||
});
|
|
||||||
|
|
||||||
if (!response.ok) {
|
|
||||||
this.clear();
|
|
||||||
throw new Error(`Fetch token failed: ${response.statusText}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
const json = await response.json();
|
|
||||||
return this.save(json['access_token'], json['refresh_token']);
|
|
||||||
}
|
|
||||||
|
|
||||||
expired(accessToken) {
|
|
||||||
if (!empty(accessToken)) {
|
|
||||||
const jwtDecoded = parseJWT(accessToken);
|
|
||||||
if (jwtDecoded) {
|
|
||||||
let now = new Date();
|
|
||||||
let exp = new Date(jwtDecoded.exp * 1000);
|
|
||||||
return now >= exp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
async update() {
|
|
||||||
const accessToken = this.getAccess();
|
|
||||||
if (empty(accessToken))
|
|
||||||
return await this.new();
|
|
||||||
if (this.expired(accessToken)) {
|
|
||||||
return await this.refresh();
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
async validate() {
|
|
||||||
const accessToken = this.getAccess();
|
|
||||||
if (empty(accessToken))
|
|
||||||
return false;
|
|
||||||
if (this.expired(accessToken)) {
|
|
||||||
return await this.refresh();
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
async function CheckResponse(json, status) {
|
async function CheckResponse(json, status) {
|
||||||
let error;
|
let error;
|
||||||
let message;
|
let message;
|
||||||
@@ -789,9 +635,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (status === 400) {
|
if (status === 400) {
|
||||||
if (typeof error === 'string') {
|
|
||||||
token.clear();
|
|
||||||
}
|
|
||||||
return undefined;
|
return undefined;
|
||||||
} else if (status === 401) {
|
} else if (status === 401) {
|
||||||
//location = '/welcome/';
|
//location = '/welcome/';
|
||||||
@@ -841,35 +684,6 @@
|
|||||||
document.location.replace(location);
|
document.location.replace(location);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return {json}
|
|
||||||
*/
|
|
||||||
async function TokenFetch(path, method = "GET", body = null, initHeaders = {}) {
|
|
||||||
|
|
||||||
if (await token.validate()) {
|
|
||||||
let headers = new Headers(initHeaders);
|
|
||||||
headers.append('Authorization', `Bearer ${token.getAccess()}`)
|
|
||||||
return AsyncFetch(path, method, body, headers);
|
|
||||||
}
|
|
||||||
|
|
||||||
Welcome();
|
|
||||||
}
|
|
||||||
|
|
||||||
function Welcome() {
|
|
||||||
localStorage.removeItem('Session');
|
|
||||||
localStorage.removeItem('Secret');
|
|
||||||
|
|
||||||
token.clear();
|
|
||||||
|
|
||||||
window.location.replace("/welcome/");
|
|
||||||
}
|
|
||||||
|
|
||||||
function SignOut() {
|
|
||||||
const api = $("input[id='apiURL']").val();
|
|
||||||
TokenFetch(api + '/sign/out');
|
|
||||||
Welcome();
|
|
||||||
}
|
|
||||||
|
|
||||||
function empty(e) {
|
function empty(e) {
|
||||||
switch (e) {
|
switch (e) {
|
||||||
case "":
|
case "":
|
||||||
@@ -1108,7 +922,7 @@
|
|||||||
const request = $("#action-help");
|
const request = $("#action-help");
|
||||||
request.html(spinner);
|
request.html(spinner);
|
||||||
|
|
||||||
TokenFetch(api + '/help' + settings)
|
AsyncFetch(api + '/help' + settings)
|
||||||
.then(json => request.html(JsonToPayload(json)))
|
.then(json => request.html(JsonToPayload(json)))
|
||||||
.catch(reason => request.html(reason.message));
|
.catch(reason => request.html(reason.message));
|
||||||
}
|
}
|
||||||
@@ -1130,7 +944,7 @@
|
|||||||
const request = $("#action-status");
|
const request = $("#action-status");
|
||||||
request.html(spinner);
|
request.html(spinner);
|
||||||
|
|
||||||
TokenFetch(api + '/account/status' + settings)
|
AsyncFetch(api + '/account/status' + settings)
|
||||||
.then(json => request.html(JsonToPayload(json)))
|
.then(json => request.html(JsonToPayload(json)))
|
||||||
.catch(reason => request.html(reason.message));
|
.catch(reason => request.html(reason.message));
|
||||||
}
|
}
|
||||||
@@ -1177,7 +991,7 @@
|
|||||||
const request = $("#action-new");
|
const request = $("#action-new");
|
||||||
request.html(spinner);
|
request.html(spinner);
|
||||||
|
|
||||||
TokenFetch(api + '/account/new' + settings, 'POST', formData, {'Content-Type': 'multipart/form-data'})
|
AsyncFetch(api + '/account/new' + settings, 'POST', formData, {'Content-Type': 'multipart/form-data'})
|
||||||
.then(json => request.html(JsonToPayload(json)))
|
.then(json => request.html(JsonToPayload(json)))
|
||||||
.catch(reason => request.html(reason.message));
|
.catch(reason => request.html(reason.message));
|
||||||
}
|
}
|
||||||
@@ -1211,7 +1025,7 @@
|
|||||||
const request = $("#action-add");
|
const request = $("#action-add");
|
||||||
request.html(spinner);
|
request.html(spinner);
|
||||||
|
|
||||||
TokenFetch(api + '/account/add' + settings, 'POST', formData, {'Content-Type': 'multipart/form-data'})
|
AsyncFetch(api + '/account/add' + settings, 'POST', formData, {'Content-Type': 'multipart/form-data'})
|
||||||
.then(json => request.html(JsonToPayload(json)))
|
.then(json => request.html(JsonToPayload(json)))
|
||||||
.catch(reason => request.html(reason.message));
|
.catch(reason => request.html(reason.message));
|
||||||
}
|
}
|
||||||
@@ -1256,7 +1070,7 @@
|
|||||||
const request = $("#action-update");
|
const request = $("#action-update");
|
||||||
request.html(spinner);
|
request.html(spinner);
|
||||||
|
|
||||||
TokenFetch(api + '/account/update' + settings, 'POST', formData, {'Content-Type': 'multipart/form-data'})
|
AsyncFetch(api + '/account/update' + settings, 'POST', formData, {'Content-Type': 'multipart/form-data'})
|
||||||
.then(json => request.html(JsonToPayload(json)))
|
.then(json => request.html(JsonToPayload(json)))
|
||||||
.catch(reason => request.html(reason.message));
|
.catch(reason => request.html(reason.message));
|
||||||
}
|
}
|
||||||
@@ -1287,7 +1101,7 @@
|
|||||||
const request = $("#action-delete");
|
const request = $("#action-delete");
|
||||||
request.html(spinner);
|
request.html(spinner);
|
||||||
|
|
||||||
TokenFetch(api + '/account/delete' + settings, 'POST', formData, {'Content-Type': 'multipart/form-data'})
|
AsyncFetch(api + '/account/delete' + settings, 'POST', formData, {'Content-Type': 'multipart/form-data'})
|
||||||
.then(json => request.html(JsonToPayload(json)))
|
.then(json => request.html(JsonToPayload(json)))
|
||||||
.catch(reason => request.html(reason.message));
|
.catch(reason => request.html(reason.message));
|
||||||
}
|
}
|
||||||
@@ -1473,7 +1287,7 @@
|
|||||||
let execute = $("button[id='btnDealForm']");
|
let execute = $("button[id='btnDealForm']");
|
||||||
execute.prop('disabled', true);
|
execute.prop('disabled', true);
|
||||||
|
|
||||||
TokenFetch(api + '/deal/' + formOrder.val() + settings, 'POST', formData, {'Content-Type': 'multipart/form-data'})
|
AsyncFetch(api + '/deal/' + formOrder.val() + settings, 'POST', formData, {'Content-Type': 'multipart/form-data'})
|
||||||
.then(function(json) {
|
.then(function(json) {
|
||||||
let html;
|
let html;
|
||||||
let payload;
|
let payload;
|
||||||
@@ -1522,7 +1336,7 @@
|
|||||||
let execute = $("button[id='btnDealJSON']");
|
let execute = $("button[id='btnDealJSON']");
|
||||||
execute.prop('disabled', true);
|
execute.prop('disabled', true);
|
||||||
|
|
||||||
TokenFetch(api + '/deal' + settings, 'POST', dealJSON.val(), {'Content-Type': 'application/json'})
|
AsyncFetch(api + '/deal' + settings, 'POST', dealJSON.val(), {'Content-Type': 'application/json'})
|
||||||
.then(function(json) {
|
.then(function(json) {
|
||||||
let html;
|
let html;
|
||||||
let payload;
|
let payload;
|
||||||
@@ -1571,7 +1385,7 @@
|
|||||||
let execute = $("button[id='btnDealYAML']");
|
let execute = $("button[id='btnDealYAML']");
|
||||||
execute.prop('disabled', true);
|
execute.prop('disabled', true);
|
||||||
|
|
||||||
TokenFetch(api + '/deal' + settings, 'POST', dealYAML.val(), {'Content-Type': 'text/plain'})
|
AsyncFetch(api + '/deal' + settings, 'POST', dealYAML.val(), {'Content-Type': 'text/plain'})
|
||||||
.then(function(json) {
|
.then(function(json) {
|
||||||
let html;
|
let html;
|
||||||
let payload;
|
let payload;
|
||||||
@@ -1613,7 +1427,7 @@
|
|||||||
let execute = $("button[id='btnCheckSignature']");
|
let execute = $("button[id='btnCheckSignature']");
|
||||||
execute.prop('disabled', true);
|
execute.prop('disabled', true);
|
||||||
|
|
||||||
TokenFetch(api + '/signature', 'POST', JSON.stringify(json), {'Content-Type': 'application/json'})
|
AsyncFetch(api + '/signature', 'POST', JSON.stringify(json), {'Content-Type': 'application/json'})
|
||||||
.then(function(json) {
|
.then(function(json) {
|
||||||
let html;
|
let html;
|
||||||
|
|
||||||
@@ -1654,7 +1468,7 @@
|
|||||||
let execute = $("button[id='btnAccountGet']");
|
let execute = $("button[id='btnAccountGet']");
|
||||||
execute.prop('disabled', true);
|
execute.prop('disabled', true);
|
||||||
|
|
||||||
TokenFetch(`${server}${api}/account/get${params}`)
|
AsyncFetch(`${server}${api}/account/get${params}`)
|
||||||
.then(function(json) {
|
.then(function(json) {
|
||||||
let html;
|
let html;
|
||||||
|
|
||||||
@@ -1694,7 +1508,7 @@
|
|||||||
let execute = $("button[id='btnAccountList']");
|
let execute = $("button[id='btnAccountList']");
|
||||||
execute.prop('disabled', true);
|
execute.prop('disabled', true);
|
||||||
|
|
||||||
TokenFetch(`${server}${api}/account/list${params}`)
|
AsyncFetch(`${server}${api}/account/list${params}`)
|
||||||
.then(function(json) {
|
.then(function(json) {
|
||||||
let html;
|
let html;
|
||||||
|
|
||||||
@@ -1733,7 +1547,7 @@
|
|||||||
const request = $("#action-deal-status");
|
const request = $("#action-deal-status");
|
||||||
request.html(spinner);
|
request.html(spinner);
|
||||||
|
|
||||||
TokenFetch(`${api}/deal/status${settings}`)
|
AsyncFetch(`${api}/deal/status${settings}`)
|
||||||
.then(json => request.html(PayloadToHTML(JsonToPayload(json))))
|
.then(json => request.html(PayloadToHTML(JsonToPayload(json))))
|
||||||
.catch(reason => request.html(reason.message));
|
.catch(reason => request.html(reason.message));
|
||||||
}
|
}
|
||||||
@@ -1751,7 +1565,7 @@
|
|||||||
const request = $("#action-deal-feedback");
|
const request = $("#action-deal-feedback");
|
||||||
request.html(spinner);
|
request.html(spinner);
|
||||||
|
|
||||||
TokenFetch(`${api}/deal/feedback${settings}`)
|
AsyncFetch(`${api}/deal/feedback${settings}`)
|
||||||
.then(json => request.html(PayloadToHTML(JsonToPayload(json))))
|
.then(json => request.html(PayloadToHTML(JsonToPayload(json))))
|
||||||
.catch(reason => request.html(reason.message));
|
.catch(reason => request.html(reason.message));
|
||||||
}
|
}
|
||||||
@@ -1769,7 +1583,7 @@
|
|||||||
const request = $("#action-deal-cancel");
|
const request = $("#action-deal-cancel");
|
||||||
request.html(spinner);
|
request.html(spinner);
|
||||||
|
|
||||||
TokenFetch(`${api}/deal/cancel${settings}`)
|
AsyncFetch(`${api}/deal/cancel${settings}`)
|
||||||
.then(json => request.html(PayloadToHTML(JsonToPayload(json))))
|
.then(json => request.html(PayloadToHTML(JsonToPayload(json))))
|
||||||
.catch(reason => request.html(reason.message));
|
.catch(reason => request.html(reason.message));
|
||||||
}
|
}
|
||||||
@@ -1789,7 +1603,7 @@
|
|||||||
let execute = $("button[id='btnDealGet']");
|
let execute = $("button[id='btnDealGet']");
|
||||||
execute.prop('disabled', true);
|
execute.prop('disabled', true);
|
||||||
|
|
||||||
TokenFetch(`${server}${api}/deal/get${params}`)
|
AsyncFetch(`${server}${api}/deal/get${params}`)
|
||||||
.then(function(json) {
|
.then(function(json) {
|
||||||
let html;
|
let html;
|
||||||
|
|
||||||
@@ -1829,7 +1643,7 @@
|
|||||||
let execute = $("button[id='btnDealList']");
|
let execute = $("button[id='btnDealList']");
|
||||||
execute.prop('disabled', true);
|
execute.prop('disabled', true);
|
||||||
|
|
||||||
TokenFetch(`${server}${api}/deal/list?${params}`)
|
AsyncFetch(`${server}${api}/deal/list?${params}`)
|
||||||
.then(function(json) {
|
.then(function(json) {
|
||||||
let html;
|
let html;
|
||||||
|
|
||||||
@@ -1875,12 +1689,6 @@
|
|||||||
})();
|
})();
|
||||||
|
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
token = new Token($("meta[name='web-client_id']").attr("content"), 'accessToken', 'refreshToken');
|
|
||||||
|
|
||||||
if (token.parse(document.location.hash)) {
|
|
||||||
window.location.hash = '#';
|
|
||||||
}
|
|
||||||
|
|
||||||
actionHelp();
|
actionHelp();
|
||||||
actionDeal();
|
actionDeal();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -104,6 +104,9 @@
|
|||||||
SendForm(params, oauth2Endpoint);
|
SendForm(params, oauth2Endpoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
document.location.replace('/dashboard');
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
Reference in New Issue
Block a user