mirror of
https://github.com/OpenBankProject/OBP-API.git
synced 2026-02-06 17:17:09 +00:00
Merge remote-tracking branch 'upstream/develop' into develop
This commit is contained in:
commit
1a4d8a01ce
@ -304,7 +304,7 @@ sandbox_data_import_secret=change_me
|
||||
payments_enabled=true
|
||||
|
||||
## Transaction requests are replacing simple payments starting from 1.4.0
|
||||
transactionRequests_enabled=true
|
||||
transactionRequests_enabled=false
|
||||
transactionRequests_connector=mapped
|
||||
|
||||
## Transaction Request Types that are supported on this server. Possible values might include SANDBOX_TAN, COUNTERPARTY, SEPA, FREE_FORM
|
||||
|
||||
@ -566,6 +566,8 @@ class Boot extends MdcLoggable {
|
||||
Menu.i("SDKs") / "sdks",
|
||||
Menu.i("Debug") / "debug",
|
||||
Menu.i("debug-basic") / "debug" / "debug-basic",
|
||||
Menu.i("debug-default-header") / "debug" / "debug-default-header",
|
||||
Menu.i("debug-default-footer") / "debug" / "debug-default-footer",
|
||||
Menu.i("debug-localization") / "debug" / "debug-localization",
|
||||
Menu.i("debug-plain") / "debug" / "debug-plain",
|
||||
Menu.i("debug-webui") / "debug" / "debug-webui",
|
||||
|
||||
154
obp-api/src/main/scala/code/cardano/cardano.scala
Normal file
154
obp-api/src/main/scala/code/cardano/cardano.scala
Normal file
@ -0,0 +1,154 @@
|
||||
import java.io.{File, PrintWriter}
|
||||
import scala.sys.process._
|
||||
import java.security.MessageDigest
|
||||
|
||||
object CardanoMetadataWriter {
|
||||
|
||||
// Function to generate SHA-256 hash of a string
|
||||
def generateHash(transactionData: String): String = {
|
||||
val digest = MessageDigest.getInstance("SHA-256")
|
||||
val hashBytes = digest.digest(transactionData.getBytes("UTF-8"))
|
||||
hashBytes.map("%02x".format(_)).mkString
|
||||
}
|
||||
|
||||
// Function to write metadata JSON file
|
||||
def writeMetadataFile(transactionHash: String, filePath: String): Unit = {
|
||||
val jsonContent =
|
||||
s"""
|
||||
|{
|
||||
| "674": {
|
||||
| "transaction_hash": "$transactionHash"
|
||||
| }
|
||||
|}
|
||||
|""".stripMargin
|
||||
|
||||
val file = new File(filePath)
|
||||
val writer = new PrintWriter(file)
|
||||
writer.write(jsonContent)
|
||||
writer.close()
|
||||
println(s"Metadata file written to: $filePath")
|
||||
}
|
||||
|
||||
// Function to submit transaction to Cardano
|
||||
def submitHashToCardano(transactionHash: String, txIn: String, txOut: String, signingKey: String, network: String): Unit = {
|
||||
val metadataFilePath = "metadata.json"
|
||||
|
||||
// Write metadata to file
|
||||
writeMetadataFile(transactionHash, metadataFilePath)
|
||||
|
||||
// Build transaction
|
||||
val buildCommand = s"cardano-cli transaction build-raw --tx-in $txIn --tx-out $txOut --metadata-json-file $metadataFilePath --out-file tx.raw"
|
||||
buildCommand.!
|
||||
|
||||
// Sign transaction
|
||||
val signCommand = s"cardano-cli transaction sign --tx-body-file tx.raw --signing-key-file $signingKey --$network --out-file tx.signed"
|
||||
signCommand.!
|
||||
|
||||
// Submit transaction
|
||||
val submitCommand = s"cardano-cli transaction submit --tx-file tx.signed --$network"
|
||||
submitCommand.!
|
||||
|
||||
println("Transaction submitted to Cardano blockchain.")
|
||||
}
|
||||
|
||||
// Example Usage
|
||||
def main(args: Array[String]): Unit = {
|
||||
val transactionData = "123|100.50|EUR|2025-03-16 12:30:00"
|
||||
val transactionHash = generateHash(transactionData)
|
||||
|
||||
val txIn = "8c293647e5cb51c4d29e57e162a0bb4a0500096560ce6899a4b801f2b69f2813:0" // This is a tx_id:0 ///"YOUR_UTXO_HERE" // Replace with actual UTXO
|
||||
val txOut = "addr_test1qruvtthh7mndxu2ncykn47tksar9yqr3u97dlkq2h2dhzwnf3d755n99t92kp4rydpzgv7wmx4nx2j0zzz0g802qvadqtczjhn:1234" // "YOUR_RECEIVER_ADDRESS+LOVELACE" // Replace with receiver address and amount
|
||||
val signingKey = "payment.skey" // Path to your signing key file
|
||||
val network = "--testnet-magic" // "--testnet-magic 1097911063" // Use --mainnet for mainnet transactions
|
||||
|
||||
submitHashToCardano(transactionHash, txIn, txOut, signingKey, network)
|
||||
}
|
||||
}
|
||||
|
||||
// TODO
|
||||
// Create second wallet
|
||||
// Find version of Pre Prod i'm running
|
||||
// Get CLI for that version
|
||||
// Use faucet to get funds
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
import com.bloxbean.cardano.client.account.Account
|
||||
import com.bloxbean.cardano.client.api.UtxoSupplier
|
||||
import com.bloxbean.cardano.client.backend.impl.local.LocalNodeBackendService
|
||||
import com.bloxbean.cardano.client.backend.api.TransactionService
|
||||
import com.bloxbean.cardano.client.backend.api.UtxoService
|
||||
import com.bloxbean.cardano.client.backend.model.Utxo
|
||||
import com.bloxbean.cardano.client.common.model.Network
|
||||
import com.bloxbean.cardano.client.metadata.cbor.CBORMetadata
|
||||
import com.bloxbean.cardano.client.transaction.spec.Transaction
|
||||
import com.bloxbean.cardano.client.api.helper.TransactionBuilder
|
||||
import java.security.MessageDigest
|
||||
|
||||
object CardanoMetadataWriter {
|
||||
|
||||
// Function to generate SHA-256 hash
|
||||
def generateHash(transactionData: String): String = {
|
||||
val digest = MessageDigest.getInstance("SHA-256")
|
||||
val hashBytes = digest.digest(transactionData.getBytes("UTF-8"))
|
||||
hashBytes.map("%02x".format(_)).mkString
|
||||
}
|
||||
|
||||
// Function to submit metadata transaction
|
||||
def submitMetadataToCardano(mnemonic: String, transactionData: String): Unit = {
|
||||
val network = Network.TESTNET // Change to Network.MAINNET for mainnet
|
||||
|
||||
// Load Daedalus wallet from mnemonic
|
||||
val account = new Account(network, mnemonic)
|
||||
|
||||
// Generate hash of transaction data
|
||||
val transactionHash = generateHash(transactionData)
|
||||
|
||||
println(s"Generated Hash: $transactionHash")
|
||||
|
||||
// Create metadata object
|
||||
val metadata = new CBORMetadata()
|
||||
metadata.put("674", Map("transaction_hash" -> transactionHash))
|
||||
|
||||
// Initialize local Cardano node backend
|
||||
val backendService = new LocalNodeBackendService("http://localhost:8080")
|
||||
val transactionService: TransactionService = backendService.getTransactionService
|
||||
val utxoService: UtxoService = backendService.getUtxoService
|
||||
|
||||
// Get available UTXOs from the wallet
|
||||
val utxos: java.util.List[Utxo] = utxoService.getUtxos(account.baseAddress, 1, 10).getValue
|
||||
|
||||
if (utxos.isEmpty) {
|
||||
println("No UTXOs found. Please fund your wallet.")
|
||||
return
|
||||
}
|
||||
|
||||
// Build transaction
|
||||
val transaction = TransactionBuilder.create()
|
||||
.account(account)
|
||||
.metadata(metadata)
|
||||
.utxos(utxos)
|
||||
.changeAddress(account.baseAddress)
|
||||
.network(network)
|
||||
.build()
|
||||
|
||||
// Sign transaction
|
||||
val signedTransaction: Transaction = account.sign(transaction)
|
||||
|
||||
// Submit transaction
|
||||
val txHash: String = transactionService.submitTransaction(signedTransaction).getValue
|
||||
println(s"✅ Transaction submitted! TxHash: $txHash")
|
||||
}
|
||||
|
||||
// Main method
|
||||
def main(args: Array[String]): Unit = {
|
||||
val mnemonic = "YOUR_12_OR_24_WORD_MNEMONIC_HERE"
|
||||
val transactionData = "123|100.50|USD|2025-03-16 12:30:00"
|
||||
|
||||
submitMetadataToCardano(mnemonic, transactionData)
|
||||
}
|
||||
}
|
||||
*/
|
||||
@ -31,7 +31,9 @@ Berlin 13359, Germany
|
||||
<H1>Here are the debugging pages.</H1>
|
||||
|
||||
<h3><a href="/debug/debug-plain">debug-plain -- no Liftweb involved. </a></h3>
|
||||
<h3><a href="/debug/debug-basic">debug-basic -- call LiftWeb code 'surround'.</a></h3>
|
||||
<h3><a href="/debug/debug-basic">debug-basic (default)-- call LiftWeb default code 'surround'.</a></h3>
|
||||
<h3><a href="/debug/debug-default-header">debug-default-header -- call LiftWeb default header code 'surround'.</a></h3>
|
||||
<h3><a href="/debug/debug-default-footer">debug-default-footer -- call LiftWeb default footer code 'surround'.</a></h3>
|
||||
<h3><a href="/debug/debug-localization">debug-localization -- call Localization 'lift:loc' method.</a></h3>
|
||||
<h3><a href="/debug/debug-webui">debug-webui -- call webui method 'apiDocumentationLink' method.</a></h3>
|
||||
|
||||
|
||||
20
obp-api/src/main/webapp/debug/debug-default-footer.html
Normal file
20
obp-api/src/main/webapp/debug/debug-default-footer.html
Normal file
@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
|
||||
|
||||
|
||||
<head><title>Basic Liftweb Suround with default</title></head>
|
||||
|
||||
<div id="main" data-lift="surround?with=default-footer;at=content" tabindex="-1">
|
||||
|
||||
<h1>I call LiftWeb code surround</h1>
|
||||
with a <a href="http://www.example.com">link</a>
|
||||
<h1>Link to static</h1><a href="/static">static image</a>
|
||||
<h1>Link to SDKs</h1><a href="/sdks">SDKs</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
20
obp-api/src/main/webapp/debug/debug-default-header.html
Normal file
20
obp-api/src/main/webapp/debug/debug-default-header.html
Normal file
@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
|
||||
|
||||
|
||||
<head><title>Basic Liftweb Suround with default</title></head>
|
||||
|
||||
<div id="main" data-lift="surround?with=default-header;at=content" tabindex="-1">
|
||||
|
||||
<h1>I call LiftWeb code surround</h1>
|
||||
with a <a href="http://www.example.com">link</a>
|
||||
<h1>Link to static</h1><a href="/static">static image</a>
|
||||
<h1>Link to SDKs</h1><a href="/sdks">SDKs</a>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
275
obp-api/src/main/webapp/templates-hidden/default-footer.html
Normal file
275
obp-api/src/main/webapp/templates-hidden/default-footer.html
Normal file
@ -0,0 +1,275 @@
|
||||
<!--
|
||||
Open Bank Project - API
|
||||
Copyright (C) 2011-2017, TESOBE GmbH.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Email: contact@tesobe.com
|
||||
TESOBE GmbH.
|
||||
Osloerstrasse 16/17
|
||||
Berlin 13359, Germany
|
||||
|
||||
This product includes software developed at
|
||||
TESOBE (http://www.tesobe.com/)
|
||||
by
|
||||
Simon Redfern : simon AT tesobe DOT com
|
||||
Sebastian Henschel: sebastian AT tesobe DOT com
|
||||
-->
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="description" content="Webapp of the Open Bank Project API">
|
||||
<meta name="keywords" content="OBP, Open Bank Project, API, bank, fintech">
|
||||
<meta name="author" content="TESOBE">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
|
||||
<title data-lift="WebUI.pageTitle">Open Bank Project: </title>
|
||||
<link href="/media/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
|
||||
<link id="favicon_link" rel="favicon icon" data-lift="WebUI.faviconLink" href="/favicon.ico" type="image/x-icon">
|
||||
<link rel="stylesheet" href="/media/css/select2.min.css">
|
||||
<link href="/media/css/toastr.min.css" rel="stylesheet" type="text/css" />
|
||||
<link href="/media/css/cookies-consent.css" rel="stylesheet">
|
||||
<link href="/media/css/bootstrap-datetimepicker.min.css" rel="stylesheet">
|
||||
<link id="main_style_sheet" data-lift="WebUI.mainStyleSheet" href="/media/css/website.css?201707241207" rel="stylesheet" type="text/css" />
|
||||
<link id="override_style_sheet" data-lift="WebUI.overrideStyleSheet" href="" rel="stylesheet" type="text/css" />
|
||||
<link rel="stylesheet" href="/font-awesome/css/all.min.css">
|
||||
|
||||
<script src="/media/js/jquery.min.js" type="text/javascript"></script>
|
||||
<script src="/media/js/bootstrap.min.js" type="text/javascript"></script>
|
||||
<script src="/media/js/select2.min.js"></script>
|
||||
<script src="/media/js/toastr.min.js" type="text/javascript"></script>
|
||||
<script src="/media/js/website.js" type="text/javascript"></script>
|
||||
<script src="/media/js/cookies-consent.js"></script>
|
||||
<script src="/media/js/moment-with-locales.min.js"></script>
|
||||
<script src="/media/js/bootstrap-datetimepicker.min.js"></script>
|
||||
<script src="/media/js/popper.min.js"></script>
|
||||
<script type="module" defer src="/media/js/inactivity.js"></script> <!-- The script loads “in the background”, and then runs when the DOM is fully built. -->
|
||||
</head>
|
||||
<body id="page_init">
|
||||
<div id="cookies-consent" data-lift="WebUI.cookieConsent">
|
||||
<div id="cookies-consent-font"> We use cookies to support session management.</div>
|
||||
<input id="cookies-consent-button" class="btn btn-default" type="button" value="Accept and close" onclick="removeByIdAndSaveIndicatorCookie('cookies-consent')"/>
|
||||
</div>
|
||||
|
||||
<div id="toast-container" class="toast-top-right" aria-live="assertive" role="alert" aria-atomic="true" aria-relevant="additions removals"></div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
<!---
|
||||
|
||||
<header>
|
||||
<div id="header-decoration"></div>
|
||||
|
||||
<div id="cookie-ipaddress-concurrent-logins" data-lift="WebUI.concurrentLoginsCookiesCheck"></div>
|
||||
|
||||
<div id="top-text" data-lift="WebUI.topText"></div>
|
||||
<table id="table-header" aria-describedby="Home Page Logo">
|
||||
<tr class="row">
|
||||
<td>
|
||||
<th scope="col"></th>
|
||||
</td>
|
||||
<td id="td-logo-left-xs">
|
||||
<div data-lift="WebUI.headerLogoLeft">
|
||||
<a href="/" aria-label="Home Page"><img src="" id="logo-left-xs" align="left" alt="left logo image"></a>
|
||||
</div>
|
||||
</td>
|
||||
<td id="td-logo-right-xs">
|
||||
<div data-lift="WebUI.headerLogoRight">
|
||||
<a href="/" aria-label="Home Page"><img src="" id="logo-right-xs" align="right" alt="right logo image"></a>
|
||||
</div>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div id="table-header-script" data-lift="WebUI.headerContentLoader"></div>
|
||||
<div id="messages-container" data-lift="Msgs"></div>
|
||||
</header>
|
||||
-->
|
||||
|
||||
|
||||
<!--
|
||||
|
||||
<a class="sr-only sr-only-focusable" href ="#main" id="index-page">Skip to main content</a>
|
||||
<a class="sr-only sr-only-focusable" href ="#register-consumer" id="consumer-registration-page">Skip to main content</a>
|
||||
<a class="sr-only sr-only-focusable" href ="#api_documentation_content" id="introduction-page">Skip to main content</a>
|
||||
<a class="sr-only sr-only-focusable" href ="#authorise" id="logon-page">Skip to main content</a>
|
||||
<a class="sr-only sr-only-focusable" href ="#recover-password" id="lost-password-page">Skip to main content</a>
|
||||
<a class="sr-only sr-only-focusable" href ="#signup" id="sign-up-page">Skip to main content</a>
|
||||
|
||||
-->
|
||||
<!--
|
||||
|
||||
<nav class="navbar navbar-default" role="navigation">
|
||||
<div class="container">
|
||||
|
||||
<div id="navbar" class="collapse navbar-collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="navitem" data-lift="WebUI.headerLogoLeft">
|
||||
<a id ="navitem-logo" class="navlink " href="/" ><img src="/media/images/logo.png" alt="homepage logo"></a>
|
||||
</li>
|
||||
<li class="navitem">
|
||||
<a class="navlink api-explorer-link" data-lift="WebUI.apiExplorerLink" href="">
|
||||
<lift:loc locid="api_explorer">API Explorer</lift:loc>
|
||||
</a>
|
||||
</li>
|
||||
<li data-lift="Nav.item?name=Consumer%20Registration&showEvenIfRestricted=true" class="navitem">
|
||||
<a id ="get-api-key-link" class="navlink" href="#">Link name. Has class "selected" if it's the current page.</a>
|
||||
</li>
|
||||
<li class="navitem">
|
||||
<a class="navlink" id="sandbox-introduction-link" data-lift="WebUI.sandboxIntroductionLink" href="">
|
||||
<lift:loc locid="introduction">Introduction</lift:loc>
|
||||
</a>
|
||||
</li>
|
||||
<li class="navitem">
|
||||
<a class="navlink" id="technical-faqs-anchor" data-lift="WebUI.technicalFaqsAnchor" href="">
|
||||
<lift:loc locid="support">Support</lift:loc>
|
||||
</a>
|
||||
</li>
|
||||
<li class="navitem" data-lift="WebUI.subscriptionsButton" >
|
||||
<a class="navlink subscriptions-button" href="">
|
||||
<lift:loc locid="subscriptions"><div class ="subscriptions-button-text"></div></lift:loc>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
|
||||
<li data-lift="Nav.item?name=Login" class="navitem">
|
||||
|
||||
<p data-lift="WebUI.userIsLoggedIn">
|
||||
<a href="/user_mgt/sign_up" class="navbar-btn" id ="register-link"><lift:loc locid="register">Register</lift:loc></a><a data-lift="Login.loggedOut" href="#" class="btn btn-danger login"><lift:loc locid="logon">Log on</lift:loc></a>
|
||||
</p>
|
||||
</li>
|
||||
|
||||
<li class="navitem" data-lift="Login.loggedIn" >
|
||||
|
||||
<p class="navbar-btn"><a href="/user-information"><span id="loggedIn-username">username</span></a><a href="#" class="btn btn-default logout">Log off <span id="countdown-timer-span" class="badge text-bg-primary"></span></a></p>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
-->
|
||||
|
||||
<!--
|
||||
|
||||
<div id="small-screen-navbar">
|
||||
<button tabindex="0" id="small-nav-collapse" onclick="openNav()" aria-label ="Open Navigation" aria-hidden="false"></button>
|
||||
<div id="small-nav-logo" data-lift="WebUI.headerLogoLeft">
|
||||
<a href="/" aria-label="HomePage Logo"><img src="" class="logo-responsive-design-mobile" alt ="Home Page Logo"></a>
|
||||
</div>
|
||||
<div id="small-nav-log-on-button" data-lift="Nav.item?name=Login">
|
||||
<a data-lift="Login.loggedOut" href="#" class="btn btn-danger login">Log on</a>
|
||||
</div>
|
||||
</div>
|
||||
<div id="obp-sidebar" class="sidebar">
|
||||
<div id="small-screen-navbar">
|
||||
<button tabindex="0" id="small-nav-cross" onclick="closeNav()" aria-hidden="true" aria-label ="Close Navigation"></button>
|
||||
<div id="small-nav-logo" data-lift="WebUI.headerLogoLeft">
|
||||
<a href="/" aria-label="HomePage Logo"><img src="" class="logo-responsive-design-mobile" alt ="Home Page Logo"></a>
|
||||
</div>
|
||||
<div id="small-nav-log-on-button" data-lift="Nav.item?name=Login">
|
||||
<a data-lift="Login.loggedOut" href="#" class="btn btn-danger login">Log on</a>
|
||||
</div>
|
||||
</div>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="navitem">
|
||||
<a class="navlink api-explorer-link" data-lift="WebUI.apiExplorerLink" href="">API Explorer</a>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="navitem" data-lift="Nav.item?name=Consumer%20Registration&showEvenIfRestricted=true" id="sideba-api-key-div">
|
||||
<a id ="get-api-key-link" class="navlink" href="#">Link name. Has class "selected" if it's the current page.</a>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="navitem">
|
||||
<a class="navlink" id="sandbox-introduction-link" data-lift="WebUI.sandboxIntroductionLink" href="">Introduction</a>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="navitem" id="technical-faqs-anchor-nav">
|
||||
<a class="navlink" id="technical-faqs-anchor" data-lift="WebUI.technicalFaqsAnchor" href="">
|
||||
<lift:loc locid="support">Support</lift:loc></a>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="navitem" id="register-link-nav">
|
||||
<a data-lift="WebUI.userIsLoggedIn" href="/user_mgt/sign_up" class="navbar-btn" id ="register-link">Register</a>
|
||||
<a data-lift="Login.loggedIn" href="#" class="logout">Log off</a></p>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
-->
|
||||
|
||||
<section id="content">
|
||||
<lift:bind name="content"/>
|
||||
The main content gets bound here
|
||||
</section>
|
||||
|
||||
|
||||
<footer>
|
||||
<div id="footer-div">
|
||||
<ul>
|
||||
<li>
|
||||
<a class="termsAndConditions-link" data-lift="WebUI.termsAndConditions" href="">
|
||||
<lift:loc locid="terms_conditions">Terms and Conditions</lift:loc></a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="privacy-policy-link" data-lift="WebUI.privacyPolicyLink" href="https://openbankproject.com/privacy-policy">
|
||||
<lift:loc locid="privacy_policy">Privacy Policy</lift:loc></a>
|
||||
</li>
|
||||
<li>
|
||||
<a id="footer-div-social" href="http://twitter.com/#!/OpenBankProject" data-lift="WebUI.footerSocialLink">Twitter</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://github.com/OpenBankProject/OBP-API/">Github</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="api-documentation-link" data-lift="WebUI.apiDocumentationLink" href="">
|
||||
<lift:loc locid="api_documentation">API Documentation</lift:loc></a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="sofi-link" data-lift="WebUI.sofiLink" href="">Sofit</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/user_mgt/sign_up?after-signup=link-to-customer" class="navbar-btn" id ="register-link">
|
||||
<lift:loc locid="register">On Board</lift:loc></a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="api-link" data-lift="WebUI.apiLinkHuman" href="">
|
||||
<lift:loc locid="api_host">This API Host</lift:loc></a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="commit-id-link" data-lift="WebUI.commitIdLink" href="">
|
||||
<lift:loc locid="api_host">GitHub commit</lift:loc></a>
|
||||
</li>
|
||||
</ul>
|
||||
<br>
|
||||
<div class="language-tag" data-lift="WebUI.currentPage">
|
||||
<span><a href="#">Language</a></span>
|
||||
<div id="supported-language-list"></div>
|
||||
</div>
|
||||
<div id="copyright">
|
||||
<a href="http://openbankproject.com"><lift:loc locid="open_bank_project_is">Open Bank Project is ©2011 - </lift:loc> <span id="copyright-year" data-lift="WebUI.currentYearText">2018</span> </a> <a href="http://tesobe.com"><lift:loc locid="and_commercial_licenses">TESOBE and distributed under the AGPL and commercial licenses. </lift:loc></a>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
264
obp-api/src/main/webapp/templates-hidden/default-header.html
Normal file
264
obp-api/src/main/webapp/templates-hidden/default-header.html
Normal file
@ -0,0 +1,264 @@
|
||||
<!--
|
||||
Open Bank Project - API
|
||||
Copyright (C) 2011-2017, TESOBE GmbH.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Email: contact@tesobe.com
|
||||
TESOBE GmbH.
|
||||
Osloerstrasse 16/17
|
||||
Berlin 13359, Germany
|
||||
|
||||
This product includes software developed at
|
||||
TESOBE (http://www.tesobe.com/)
|
||||
by
|
||||
Simon Redfern : simon AT tesobe DOT com
|
||||
Sebastian Henschel: sebastian AT tesobe DOT com
|
||||
-->
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="description" content="Webapp of the Open Bank Project API">
|
||||
<meta name="keywords" content="OBP, Open Bank Project, API, bank, fintech">
|
||||
<meta name="author" content="TESOBE">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
|
||||
<title data-lift="WebUI.pageTitle">Open Bank Project: </title>
|
||||
<link href="/media/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
|
||||
<link id="favicon_link" rel="favicon icon" data-lift="WebUI.faviconLink" href="/favicon.ico" type="image/x-icon">
|
||||
<link rel="stylesheet" href="/media/css/select2.min.css">
|
||||
<link href="/media/css/toastr.min.css" rel="stylesheet" type="text/css" />
|
||||
<link href="/media/css/cookies-consent.css" rel="stylesheet">
|
||||
<link href="/media/css/bootstrap-datetimepicker.min.css" rel="stylesheet">
|
||||
<link id="main_style_sheet" data-lift="WebUI.mainStyleSheet" href="/media/css/website.css?201707241207" rel="stylesheet" type="text/css" />
|
||||
<link id="override_style_sheet" data-lift="WebUI.overrideStyleSheet" href="" rel="stylesheet" type="text/css" />
|
||||
<link rel="stylesheet" href="/font-awesome/css/all.min.css">
|
||||
|
||||
<script src="/media/js/jquery.min.js" type="text/javascript"></script>
|
||||
<script src="/media/js/bootstrap.min.js" type="text/javascript"></script>
|
||||
<script src="/media/js/select2.min.js"></script>
|
||||
<script src="/media/js/toastr.min.js" type="text/javascript"></script>
|
||||
<script src="/media/js/website.js" type="text/javascript"></script>
|
||||
<script src="/media/js/cookies-consent.js"></script>
|
||||
<script src="/media/js/moment-with-locales.min.js"></script>
|
||||
<script src="/media/js/bootstrap-datetimepicker.min.js"></script>
|
||||
<script src="/media/js/popper.min.js"></script>
|
||||
<script type="module" defer src="/media/js/inactivity.js"></script> <!-- The script loads “in the background”, and then runs when the DOM is fully built. -->
|
||||
</head>
|
||||
<body id="page_init">
|
||||
<div id="cookies-consent" data-lift="WebUI.cookieConsent">
|
||||
<div id="cookies-consent-font"> We use cookies to support session management.</div>
|
||||
<input id="cookies-consent-button" class="btn btn-default" type="button" value="Accept and close" onclick="removeByIdAndSaveIndicatorCookie('cookies-consent')"/>
|
||||
</div>
|
||||
|
||||
<div id="toast-container" class="toast-top-right" aria-live="assertive" role="alert" aria-atomic="true" aria-relevant="additions removals"></div>
|
||||
|
||||
<div class="container">
|
||||
<header>
|
||||
<div id="header-decoration"></div>
|
||||
|
||||
<div id="cookie-ipaddress-concurrent-logins" data-lift="WebUI.concurrentLoginsCookiesCheck"></div>
|
||||
|
||||
<div id="top-text" data-lift="WebUI.topText"></div>
|
||||
<table id="table-header" aria-describedby="Home Page Logo">
|
||||
<tr class="row">
|
||||
<td>
|
||||
<th scope="col"></th>
|
||||
</td>
|
||||
<td id="td-logo-left-xs">
|
||||
<div data-lift="WebUI.headerLogoLeft">
|
||||
<a href="/" aria-label="Home Page"><img src="" id="logo-left-xs" align="left" alt="left logo image"></a>
|
||||
</div>
|
||||
</td>
|
||||
<td id="td-logo-right-xs">
|
||||
<div data-lift="WebUI.headerLogoRight">
|
||||
<a href="/" aria-label="Home Page"><img src="" id="logo-right-xs" align="right" alt="right logo image"></a>
|
||||
</div>
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
</table>
|
||||
<div id="table-header-script" data-lift="WebUI.headerContentLoader"></div>
|
||||
<div id="messages-container" data-lift="Msgs"></div>
|
||||
</header>
|
||||
<a class="sr-only sr-only-focusable" href ="#main" id="index-page">Skip to main content</a>
|
||||
<a class="sr-only sr-only-focusable" href ="#register-consumer" id="consumer-registration-page">Skip to main content</a>
|
||||
<a class="sr-only sr-only-focusable" href ="#api_documentation_content" id="introduction-page">Skip to main content</a>
|
||||
<a class="sr-only sr-only-focusable" href ="#authorise" id="logon-page">Skip to main content</a>
|
||||
<a class="sr-only sr-only-focusable" href ="#recover-password" id="lost-password-page">Skip to main content</a>
|
||||
<a class="sr-only sr-only-focusable" href ="#signup" id="sign-up-page">Skip to main content</a>
|
||||
<nav class="navbar navbar-default" role="navigation">
|
||||
<div class="container">
|
||||
<!-- <div class="navbar-header">-->
|
||||
<!-- <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">-->
|
||||
<!-- <span class="sr-only">Toggle navigation</span>-->
|
||||
<!-- <span class="icon-bar"></span>-->
|
||||
<!-- <span class="icon-bar"></span>-->
|
||||
<!-- <span class="icon-bar"></span>-->
|
||||
<!-- </button>-->
|
||||
<!-- </div>-->
|
||||
<div id="navbar" class="collapse navbar-collapse">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="navitem" data-lift="WebUI.headerLogoLeft">
|
||||
<a id ="navitem-logo" class="navlink " href="/" ><img src="/media/images/logo.png" alt="homepage logo"></a>
|
||||
</li>
|
||||
<li class="navitem">
|
||||
<a class="navlink api-explorer-link" data-lift="WebUI.apiExplorerLink" href="">
|
||||
<lift:loc locid="api_explorer">API Explorer</lift:loc>
|
||||
</a>
|
||||
</li>
|
||||
<li data-lift="Nav.item?name=Consumer%20Registration&showEvenIfRestricted=true" class="navitem">
|
||||
<a id ="get-api-key-link" class="navlink" href="#">Link name. Has class "selected" if it's the current page.</a>
|
||||
</li>
|
||||
<li class="navitem">
|
||||
<a class="navlink" id="sandbox-introduction-link" data-lift="WebUI.sandboxIntroductionLink" href="">
|
||||
<lift:loc locid="introduction">Introduction</lift:loc>
|
||||
</a>
|
||||
</li>
|
||||
<li class="navitem">
|
||||
<a class="navlink" id="technical-faqs-anchor" data-lift="WebUI.technicalFaqsAnchor" href="">
|
||||
<lift:loc locid="support">Support</lift:loc>
|
||||
</a>
|
||||
</li>
|
||||
<li class="navitem" data-lift="WebUI.subscriptionsButton" >
|
||||
<a class="navlink subscriptions-button" href="">
|
||||
<lift:loc locid="subscriptions"><div class ="subscriptions-button-text"></div></lift:loc>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<!-- login state -->
|
||||
<li data-lift="Nav.item?name=Login" class="navitem">
|
||||
<!-- LOGGED OUT -->
|
||||
<p data-lift="WebUI.userIsLoggedIn">
|
||||
<a href="/user_mgt/sign_up" class="navbar-btn" id ="register-link"><lift:loc locid="register">Register</lift:loc></a><a data-lift="Login.loggedOut" href="#" class="btn btn-danger login"><lift:loc locid="logon">Log on</lift:loc></a>
|
||||
</p>
|
||||
</li>
|
||||
|
||||
<li class="navitem" data-lift="Login.loggedIn" >
|
||||
<!-- LOGGED IN -->
|
||||
<p class="navbar-btn"><a href="/user-information"><span id="loggedIn-username">username</span></a><a href="#" class="btn btn-default logout">Log off <span id="countdown-timer-span" class="badge text-bg-primary"></span></a></p>
|
||||
</li>
|
||||
</ul>
|
||||
</div><!--/.nav-collapse -->
|
||||
</div>
|
||||
</nav>
|
||||
<div id="small-screen-navbar">
|
||||
<button tabindex="0" id="small-nav-collapse" onclick="openNav()" aria-label ="Open Navigation" aria-hidden="false"></button>
|
||||
<div id="small-nav-logo" data-lift="WebUI.headerLogoLeft">
|
||||
<a href="/" aria-label="HomePage Logo"><img src="" class="logo-responsive-design-mobile" alt ="Home Page Logo"></a>
|
||||
</div>
|
||||
<div id="small-nav-log-on-button" data-lift="Nav.item?name=Login">
|
||||
<a data-lift="Login.loggedOut" href="#" class="btn btn-danger login">Log on</a>
|
||||
</div>
|
||||
</div>
|
||||
<div id="obp-sidebar" class="sidebar">
|
||||
<div id="small-screen-navbar">
|
||||
<button tabindex="0" id="small-nav-cross" onclick="closeNav()" aria-hidden="true" aria-label ="Close Navigation"></button>
|
||||
<div id="small-nav-logo" data-lift="WebUI.headerLogoLeft">
|
||||
<a href="/" aria-label="HomePage Logo"><img src="" class="logo-responsive-design-mobile" alt ="Home Page Logo"></a>
|
||||
</div>
|
||||
<div id="small-nav-log-on-button" data-lift="Nav.item?name=Login">
|
||||
<a data-lift="Login.loggedOut" href="#" class="btn btn-danger login">Log on</a>
|
||||
</div>
|
||||
</div>
|
||||
<ul>
|
||||
<li>
|
||||
<div class="navitem">
|
||||
<a class="navlink api-explorer-link" data-lift="WebUI.apiExplorerLink" href="">API Explorer</a>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="navitem" data-lift="Nav.item?name=Consumer%20Registration&showEvenIfRestricted=true" id="sideba-api-key-div">
|
||||
<a id ="get-api-key-link" class="navlink" href="#">Link name. Has class "selected" if it's the current page.</a>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="navitem">
|
||||
<a class="navlink" id="sandbox-introduction-link" data-lift="WebUI.sandboxIntroductionLink" href="">Introduction</a>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="navitem" id="technical-faqs-anchor-nav">
|
||||
<a class="navlink" id="technical-faqs-anchor" data-lift="WebUI.technicalFaqsAnchor" href="">
|
||||
<lift:loc locid="support">Support</lift:loc></a>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="navitem" id="register-link-nav">
|
||||
<a data-lift="WebUI.userIsLoggedIn" href="/user_mgt/sign_up" class="navbar-btn" id ="register-link">Register</a>
|
||||
<a data-lift="Login.loggedIn" href="#" class="logout">Log off</a></p>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<section id="content">
|
||||
<lift:bind name="content"/>
|
||||
The main content gets bound here
|
||||
</section>
|
||||
|
||||
<!--
|
||||
<footer>
|
||||
<div id="footer-div">
|
||||
<ul>
|
||||
<li>
|
||||
<a class="termsAndConditions-link" data-lift="WebUI.termsAndConditions" href="">
|
||||
<lift:loc locid="terms_conditions">Terms and Conditions</lift:loc></a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="privacy-policy-link" data-lift="WebUI.privacyPolicyLink" href="https://openbankproject.com/privacy-policy">
|
||||
<lift:loc locid="privacy_policy">Privacy Policy</lift:loc></a>
|
||||
</li>
|
||||
<li>
|
||||
<a id="footer-div-social" href="http://twitter.com/#!/OpenBankProject" data-lift="WebUI.footerSocialLink">Twitter</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="https://github.com/OpenBankProject/OBP-API/">Github</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="api-documentation-link" data-lift="WebUI.apiDocumentationLink" href="">
|
||||
<lift:loc locid="api_documentation">API Documentation</lift:loc></a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="sofi-link" data-lift="WebUI.sofiLink" href="">Sofit</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/user_mgt/sign_up?after-signup=link-to-customer" class="navbar-btn" id ="register-link">
|
||||
<lift:loc locid="register">On Board</lift:loc></a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="api-link" data-lift="WebUI.apiLinkHuman" href="">
|
||||
<lift:loc locid="api_host">This API Host</lift:loc></a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="commit-id-link" data-lift="WebUI.commitIdLink" href="">
|
||||
<lift:loc locid="api_host">GitHub commit</lift:loc></a>
|
||||
</li>
|
||||
</ul>
|
||||
<br>
|
||||
<div class="language-tag" data-lift="WebUI.currentPage">
|
||||
<span><a href="#">Language</a></span>
|
||||
<div id="supported-language-list"></div>
|
||||
</div>
|
||||
<div id="copyright">
|
||||
<a href="http://openbankproject.com"><lift:loc locid="open_bank_project_is">Open Bank Project is ©2011 - </lift:loc> <span id="copyright-year" data-lift="WebUI.currentYearText">2018</span> </a> <a href="http://tesobe.com"><lift:loc locid="and_commercial_licenses">TESOBE and distributed under the AGPL and commercial licenses. </lift:loc></a>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
-->
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Reference in New Issue
Block a user