Skip to content

v1.0.2

Latest
Compare
Choose a tag to compare
@vinval vinval released this 23 Jan 09:43
· 5 commits to main since this release
3a3ec71

tokenizr

A simple node token auth system.

const tokenizr = require("@vinval/tokenizr");

// sign({}, timeInSeconds or Date);

// back the token for every use and by default one day duration
const token = tokenizr.sign({userdata: {...}}); 

// or back the token for every use and 7 day duration
const token = tokenizr.sign({userdata: {...}}, 60 * 60 * 24 * 7);

// or back the token for every use and one day end
const token = tokenizr.sign({userdata: {...}}, new Date(year,month,day,hour,minutes,...));

// next, for would verify your token and callback your data
tokenizr.verify(token); // back data based on token received before while still active

// destroy it if it is no longer needed
tokenizr.detroy(token); // back data based on token received before while still active

Example

const express = require("express");
const app = express();
const bodyParser = require("body-parser");
const tokenizr = require("@vinval/tokenizr");
const cookier = require("@vinval/cookier");

app.use(bodyParser.urlencoded({ extended: true }));

const users = {
    user1: {
        password: "12345"
    },
    user2: {
        password: "67890"
    },
}

const checkUser = (username, password) => {
    try {
        if (users[username].password == password) return users[username];
    } catch (error) {
        return false;
    }
    return false;
}

app.get("/", (req,res,next)=>{
    const cookies = cookier.parse(req.headers.cookie);
    const user = tokenizr.verify(cookies.token);
    if (user) {
        // do what you prefer with user object
    }
})

app.post("/login", (req,res,next)=>{
    const { password, username } = req.body;
    const user = checkUser(username, password);
    if (user) {
        const token = tokenizr.sign(user, 60**2 * 24 * 7); // 1 token duration 1 week
        // after that, use token how to prefer
    } else {
        // user not found
    }
})

app.listen(3000);