🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@passwordlessdev/passwordless-nodejs

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@passwordlessdev/passwordless-nodejs

Passwordless Node.js library

npmnpm
Version
0.1.0
Version published
Weekly downloads
10
-56.52%
Maintainers
1
Weekly downloads
 
Created
Source

This library is meant for helping you integrate 'Passwordless.dev' with your Node.js backend.

Requirements

  • ES2018 or newer, read more here.
  • Supported JavaScript modules: CommonJS, ES
  • Node.js 10 or newer

Getting Started

.env

When using .env to configure your web application you'll need to set the following properties:

KeyValue exampleDescriptionOptional
PASSWORDLESS_APIhttps://v4.passwordless.devThe base url where your Passwordless.dev back-end is runningYes
PASSWORDLESS_SECRETdemo:secret:f831e39c29e64b77aba547478a4b3ec6This is your secret obtained from the AdminConsole.No

You would then use the PasswordlessClient as:

Using

Specifying the baseUrl would be optional, and will contain https://v4.passwordless.dev as its default value.

const options: PasswordlessOptions = {
  baseUrl: 'https://v4.passwordless.dev'
};
this._passwordlessClient = new PasswordlessClient('demo:secret:f831e39c29e64b77aba547478a4b3ec6', options);
const options: PasswordlessOptions = {};
this._passwordlessClient = new PasswordlessClient('demo:secret:f831e39c29e64b77aba547478a4b3ec6', options);

Registration

If you had for example a 'UserController.ts' with a 'signup' arrow function. You could register a new token as shown below.

You'll first want to proceed to store the new user in your database and verifying it has succeeded, before registering the token.

signup = async (request: express.Request, response: express.Response) => {
        const signupRequest: SignupRequest = request.body;
        const repository: UserRepository = new UserRepository();
        let id: string = null;
        try {
            id = repository.create(signupRequest.username, signupRequest.firstName, signupRequest.lastName);
        } catch {
            // do error handling, creating user failed.
        } finally {
            repository.close();
        }

        if (!id) {
            // Do not proceed to create a token, we failed to create a user.
            response.send(400);
        }

        let registerOptions = new RegisterOptions();
        registerOptions.userId = id;
        registerOptions.username = signupRequest.username;
        if (signupRequest.deviceName) {
            registerOptions.aliases = new Array(1);
            registerOptions.aliases[0] = signupRequest.deviceName;
        }
        
        registerOptions.discoverable = true;
        
        const token: RegisterTokenResponse = await this._passwordlessClient.createRegisterToken(registerOptions);
        response.send(token);
    }

Logging in

signin = async (request: express.Request, response: express.Response) => {
        try {
            const token: string = request.query.token as string;
            const verifiedUser: VerifiedUser = await this._passwordlessClient.verifyToken(token);

            if (verifiedUser && verifiedUser.success === true) {
                // If you want to build a JWT token for SPA that are rendered client-side, you can do this here.
                response.send(JSON.stringify(verifiedUser));
                return;
            }
        } catch (error) {
            console.error(error.message);
        }
        response.send(401);
    }

Keywords

bitwarden

FAQs

Package last updated on 02 Aug 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts