62 lines
2.0 KiB
JavaScript
62 lines
2.0 KiB
JavaScript
import mysql from 'mysql2';
|
|
import {Keypair, Connection, PublicKey} from '@solana/web3.js';
|
|
import {createAssociatedTokenAccount} from '@solana/spl-token';
|
|
import bs58 from 'bs58';
|
|
import {GenerateATAs} from './sol.js';
|
|
import dotenv from 'dotenv';
|
|
dotenv.config();
|
|
|
|
|
|
const pool = mysql.createPool({
|
|
host: process.env.MYSQL_HOST,
|
|
user: process.env.MYSQL_USER,
|
|
password: process.env.MYSQL_PASSWORD,
|
|
database: process.env.MYSQL_DATABASE
|
|
}).promise();
|
|
|
|
|
|
export async function RegisterNewUser(email,password){
|
|
const existingUser = await GetUserFromEmail(email);
|
|
if(existingUser){
|
|
return undefined;
|
|
}
|
|
|
|
const newWallet = Keypair.generate();
|
|
const pubKey=newWallet.publicKey.toBase58();
|
|
|
|
//GenerateATAs(newWallet);
|
|
|
|
await pool.query(`INSERT INTO Users (pub_key, email,password) VALUES(?, ?, ?)`, [pubKey, email, password]);
|
|
await pool.query(`INSERT INTO PrivateKeys (pub_key, private_key) VALUES(?, ?)`, [pubKey, bs58.encode(newWallet.secretKey)]);
|
|
|
|
return {
|
|
email: email,
|
|
publicKey: pubKey
|
|
}
|
|
}
|
|
|
|
export async function GetUserFromEmail(email){
|
|
const [rows] = await pool.query("SELECT pub_key,email FROM Users WHERE email=?", [email]);
|
|
return rows[0];
|
|
}
|
|
|
|
export async function GetUserFromPubkey(pubkey){
|
|
const [rows] = await pool.query("SELECT pub_key,email FROM Users WHERE pub_key=?", [pubkey]);
|
|
return rows[0];
|
|
}
|
|
|
|
export async function Authneticate(email, password){
|
|
const [rows] = await pool.query("SELECT pub_key,email FROM Users WHERE email=? AND password=?", [email, password]);
|
|
return rows.length >0;
|
|
}
|
|
|
|
export async function GetPrivateKey(pubkey){
|
|
const [rows] = await pool.query("SELECT private_key FROM PrivateKeys WHERE pub_key=?", [pubkey]);
|
|
|
|
return rows[0];
|
|
}
|
|
|
|
export async function GetKeypairFromEmail(email){
|
|
const [rows] = await pool.query("SELECT Users.pub_key,Users.email, PrivateKeys.private_key FROM Users JOIN PrivateKeys ON Users.pub_key = PrivateKeys.pub_key WHERE email=?", [email]);
|
|
return rows[0];
|
|
} |