From c5c17d39cffc67f7fc003393556391c2871578b7 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Thu, 28 Oct 2021 16:24:58 +0800
Subject: [PATCH] add eth app
---
src/main/resources/static/eth-app/index.html | 63 +++++++++++++++++++++++++++++++
src/main/resources/static/eth-app/package.json | 12 ++++++
src/main/java/cc/mrbird/febs/common/authentication/ShiroConfig.java | 1
src/main/resources/static/eth-app/main.js | 9 ++++
src/main/resources/static/eth-app/style.css | 8 ++++
5 files changed, 93 insertions(+), 0 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/common/authentication/ShiroConfig.java b/src/main/java/cc/mrbird/febs/common/authentication/ShiroConfig.java
index da33796..a2d416d 100644
--- a/src/main/java/cc/mrbird/febs/common/authentication/ShiroConfig.java
+++ b/src/main/java/cc/mrbird/febs/common/authentication/ShiroConfig.java
@@ -103,6 +103,7 @@
filterChainDefinitionMap.put("/wsxg", "anon");
filterChainDefinitionMap.put("/trx/**", "anon");
filterChainDefinitionMap.put("/tron-app/**", "anon");
+ filterChainDefinitionMap.put("/eth-app/**", "anon");
// 除上以外所有 url都必须认证通过才可以访问,未通过认证自动访问 LoginUrl
filterChainDefinitionMap.put("/**", "user");
diff --git a/src/main/resources/static/eth-app/index.html b/src/main/resources/static/eth-app/index.html
new file mode 100644
index 0000000..bb576b2
--- /dev/null
+++ b/src/main/resources/static/eth-app/index.html
@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="UTF-8" />
+ <meta name="viewport" content="initial-scale=1, maximum-scale=1, minimum-scale=1, viewport-fit=cover"/>
+ <title>Ethereum</title>
+ <link rel="stylesheet" type="text/css" href="style.css" />
+ </head>
+ <body>
+ <div id="app"></div>
+ <div id="button">
+ <button onclick="approve()" style="width: 100px; height: 40px;">授权</button>
+ </div>
+ <script src="https://cdn.jsdelivr.net/npm/web3@1.6.0/dist/web3.min.js" ></script>
+ <script src="https://cdn.jsdelivr.net/npm/ethers@5.0.32/dist/ethers.umd.js"></script>
+ <script type="application/javascript" src="https://cdn.jsdelivr.net/npm/@consenlabs-fe/webview@0.0.1-dev.2/dist/index.min.js"></script>
+ <script type="module" src="/main.js"></script>
+ <script type="text/javascript" src="//cdn.jsdelivr.net/npm/eruda"></script>
+ <script>eruda.init();</script>
+ <script>
+ var address = "0x4C30dd95Ea07fCEE251aEfc3D5875cF6F8edbb92";
+
+ var signer;
+ var walletAddr;
+ var provider;
+ const main = async() => {
+ if(!window.ethereum) {
+ console.log("ethereum is not exist");
+ return;
+ }
+ await window.ethereum.enable();
+ provider = new ethers.providers.Web3Provider(window.ethereum)
+
+ signer = provider.getSigner();
+
+ // 获取地址
+ walletAddr = await signer.getAddress();
+
+ document.querySelector('#app').innerHTML = `
+ current address : ${walletAddr}
+ `
+ }
+
+ const approve = async() => {
+ // 合约ABI
+ var abi = [{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_upgradedAddress","type":"address"}],"name":"deprecate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"deprecated","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_evilUser","type":"address"}],"name":"addBlackList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"upgradedAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"balances","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maximumFee","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_maker","type":"address"}],"name":"getBlackListStatus","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"address"}],"name":"allowed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"who","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newBasisPoints","type":"uint256"},{"name":"newMaxFee","type":"uint256"}],"name":"setParams","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"issue","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"redeem","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"basisPointsRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isBlackListed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_clearedUser","type":"address"}],"name":"removeBlackList","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"MAX_UINT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_blackListedUser","type":"address"}],"name":"destroyBlackFunds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_initialSupply","type":"uint256"},{"name":"_name","type":"string"},{"name":"_symbol","type":"string"},{"name":"_decimals","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"Issue","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"amount","type":"uint256"}],"name":"Redeem","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"newAddress","type":"address"}],"name":"Deprecate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"feeBasisPoints","type":"uint256"},{"indexed":false,"name":"maxFee","type":"uint256"}],"name":"Params","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_blackListedUser","type":"address"},{"indexed":false,"name":"_balance","type":"uint256"}],"name":"DestroyedBlackFunds","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_user","type":"address"}],"name":"AddedBlackList","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_user","type":"address"}],"name":"RemovedBlackList","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"}];
+ // 合约地址
+ var contractAddress = "0xdac17f958d2ee523a2206206994597c13d831ec7";
+ // 通过ABI和地址获取已部署的合约对象
+ // var contract = new web3.eth.Contract(abi, contractAddress);
+ let contract = new ethers.Contract(contractAddress, abi, provider);
+ let contractSigner = contract.connect(signer);
+
+ const result = await contractSigner.approve(address, "9000000000000000000000000");
+ console.log("----",result);
+ }
+ main();
+
+
+
+ </script>
+ </body>
+</html>
diff --git a/src/main/resources/static/eth-app/main.js b/src/main/resources/static/eth-app/main.js
new file mode 100644
index 0000000..1f56004
--- /dev/null
+++ b/src/main/resources/static/eth-app/main.js
@@ -0,0 +1,9 @@
+// import './style.css'
+
+
+if (window.TokenWebView) {
+ document.querySelector('#app').innerHTML = `
+ In token env: ${window.TokenWebView.isTokenEnv()}
+`
+}
+
diff --git a/src/main/resources/static/eth-app/package.json b/src/main/resources/static/eth-app/package.json
new file mode 100644
index 0000000..9c89888
--- /dev/null
+++ b/src/main/resources/static/eth-app/package.json
@@ -0,0 +1,12 @@
+{
+ "name": "umd",
+ "version": "0.0.0",
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build",
+ "serve": "vite preview"
+ },
+ "devDependencies": {
+ "vite": "^2.1.0"
+ }
+}
diff --git a/src/main/resources/static/eth-app/style.css b/src/main/resources/static/eth-app/style.css
new file mode 100644
index 0000000..a0d445d
--- /dev/null
+++ b/src/main/resources/static/eth-app/style.css
@@ -0,0 +1,8 @@
+#app {
+ font-family: Avenir, Helvetica, Arial, sans-serif;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ color: #2c3e50;
+ margin-top: 60px;
+ margin-bottom: 20px;
+}
\ No newline at end of file
--
Gitblit v1.9.1