mirror of
https://github.com/tcsenpai/OCSA-On-Chain-Signon-Authentication.git
synced 2025-06-05 10:35:28 +00:00
46 lines
1.6 KiB
JavaScript
46 lines
1.6 KiB
JavaScript
// INFO This library relies on ethers.js
|
|
|
|
var provider;
|
|
var signer;
|
|
var address;
|
|
|
|
var session_token_storage;
|
|
|
|
const server = "http://193.187.129.116:9000"
|
|
|
|
async function connect() {
|
|
provider = new ethers.providers.Web3Provider(window.ethereum, "any");
|
|
// Prompt user for account connections
|
|
await provider.send("eth_requestAccounts", []);
|
|
signer = provider.getSigner();
|
|
address = await signer.getAddress();
|
|
console.log("Connected to: " + address);
|
|
return address
|
|
}
|
|
|
|
async function login() {
|
|
// Fetching our public ip
|
|
var response = await fetch("https://api.ipify.org?format=json");
|
|
var data = await response.json();
|
|
var ip = data.ip;
|
|
// Get the message from the server
|
|
var HEADERS = new Headers ({"User-Agent": "Auther"})
|
|
var response = await fetch(server + "/auth/hello/" + ip, {headers: HEADERS });
|
|
var data = await response.json();
|
|
var session_token = data.session_token;
|
|
console.log("Session token: " + session_token);
|
|
var message = data.message;
|
|
console.log("Message: " + message);
|
|
// Sign the message
|
|
var signature = await signer.signMessage(message);
|
|
// Send the signature to the server
|
|
var response = await fetch(server + "/auth/response/", { headers: HEADERS, method: "POST", body: JSON.stringify({ session_token: session_token, message: message, signature: signature, address: address, ip: ip }) });
|
|
var data = await response.json();
|
|
console.log(data);
|
|
session_token_storage = session_token;
|
|
if (data.verified) {
|
|
return "Authenticated"
|
|
} else {
|
|
return "NOPE"
|
|
}
|
|
} |