2fab64

1.0.1 • Public • Published

2FAB64

2FAB is a secure auth token generator Source code:

const { Database } = require("bun:sqlite");
const db = new Database();

const inMemoryStore = db.query(`
CREATE TABLE IF NOT EXISTS tokenStore (
  token TEXT,
  uses INTEGER,
  usesLimit INTEGER, -- Make sure this column exists to match your INSERT statement
  date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
`).run()


  

const deleteToken = db.query("DELETE FROM tokenStore WHERE token = $token");
function randomString(length) {
    let result = '';
    const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    const charactersLength = characters.length;
    let counter = 0;
    while (counter < length) {
        result += characters.charAt(Math.floor(Math.random() * charactersLength));
        counter += 1;
    }
    return result;
}

async function generateSecureToken(cost, stringLength, uses) {
    const token = await Bun.password.hash(randomString(stringLength), {
        algorithm: "bcrypt",
        cost: cost,
    });
    db.query("INSERT INTO tokenStore (token, uses, usesLimit) VALUES ($token, $uses, $usesLimit)")
    .run({ $token: token, $uses:  0, $usesLimit: uses });
    return await token
}

async function validateSecureToken(token) {
    if (!inMemoryStore.get({ $token: token })) {
        const findTokenData = inMemoryStore.get({ $token: token });
        if (findTokenData.uses > findTokenData.usesLimit || findTokenData == findTokenData.usesLimit) {
            return false
        }
        return false
    }
    return true
}

async function destroySecureToken(token) {
    // Query to check if the token exists
    const tokenExistsQuery = db.query("SELECT * FROM tokenStore WHERE token = $token");
    // Execute the query with the given token
    const tokenData = await tokenExistsQuery.get({ $token: token });
    if (!tokenData) {
        console.error("Token does not exist");
        return;
    }
    // If the token exists, delete it
    deleteToken.run({ $token: token });
    console.log("Token destroyed");
}


module.exports = { destroySecureToken, validateSecureToken, generateSecureToken }

Readme

Keywords

none

Package Sidebar

Install

npm i 2fab64

Weekly Downloads

1

Version

1.0.1

License

MIT

Unpacked Size

17.4 kB

Total Files

4

Last publish

Collaborators

  • duckeydev