npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

2fauth-lib

v1.0.2

Published

Authorization lib for authenticating users with passwords and 2fa

Downloads

192

Readme

Auth Token Generator and Validator

Usage

import {Authenticator} from "2fauth-lib";

const passkey = "super secret";
const userId = 1; // Identifier can be anything
const auth = new Authenticator();
// creates the bcrypt hash and totp, you can of course create them yourself without this method
const hashAndTotp = await auth.CreateHashAndTotp(passkey);
// hashAndTotp = {passwordHash,totpKey}

// register the secrets so we don't have to pass them on each authentication call
auth.RegisterSecrets(userId,hashAndTotp);

// do some work getting the users input
const userProvidedPassword = "super secret";
const userProvidedTotpValue = 123456;

// won't work and returns undefined since totp is wrong but you get the gist of it here
const token = await auth.Authenticate(userId,userProvidedPassword,userProvidedTotpValue);

// if you did not register the secrets you can also opt to pass them into the optional parameters
const token = await auth.Authenticate(userId,userProvidedPassword,userProvidedTotpValue,{secrets : hashAndTotp});

// if you want to validate an auth token a user provided you can use :
// do some work to get the auth token
const userAuthToken = "Gibberish";
const authData = auth.CheckAuthToken(userAuthToken);
// authData = {id,timeAdded,timeExpires,usages} or undefined if not valid

// if you no longer wish to use an auth token you can expire it early
auth.ExpireAuthToken(token);
// or you can expire all auth tokens for a specific id
auth.ExpireAllAuthTokens(userId);

// if you want to remove a Secret from a user you can use
auth.RemoveSecrets(userId);

// if you want to check if the user has a secret you can use
if (auth.CheckIfSecretIsRegisterWithIdentifier(userId){
    console.log("user has a secret");
}

constructor parameters

The constructor of the Authenticator class accepts an object as parameters, this object can have multiple properties, if they are not set the default is used.

  1. maxTokensPerId : Number, default : 10, minimum : 1
  2. expiryTimeS : Number, default : 604800 (1 week), minimum : 5
  3. bcryptHashRounds : Number, default : 12
  4. authTokenLength : Number, default : 32
  5. totpKeySize : Number, default : 32, minimum : 20