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

@tooltwist/loginservice-client

v1.0.5

Published

NodeJS client for Tooltwist's Loginservice

Downloads

7

Readme

loginservice-client-nodejs

This package provides a few useful functions for use in a NodeJS backend, working in conjunction with Tooltwist's Loginservice service. For a client-side interface see @tooltwist/vue-loginservice.

Installation

npm install @tooltwist/loginservice-client --save

or

yarn add @tooltwist/loginservice-client

Usage

Validating user credentials

In the client-side code, the Jason Web Token (JWT) from loginservice is usually passed to the backend as an HTTP header. For example:

const JWT = this.$loginservice.jwt // e.g. if using vue-loginservice
const reply = await axios(url, {
  headers: {
    Authorization: `Bearer ${JWT}`
  },
  ...
}

On the server, usually in the middleware, the JWT is used as credentials for the current user. This is usually done as several steps:

  1. Get the JWT from the HTTP request:

    import loginserviceClient from '@tooltwist/loginservice-client'
    
    const jwt = loginserviceClient.getJWTFromAuthorization(req.headers['Authorization']
  2. Verify that the token is valid. This step requires that you have a Juice configuration that defines services.auth.secret, which is the private credentials provided by authservice. This function throw an exception if the token is invalid.

    await loginserviceClient.validateJWT(jwt)

    Note: It is essential that you never pass the secret to the browser, or try to run this package in the client-side part of your application.

  3. If you wish to use the credentials contained within the JWT it can be decoded:

    const credentials = loginserviceClient.decodeJWT(jwt)

Sending Emails

Emails can be sent through the Loginservice API. The advantage of this approach is that Loginservice logs requests and can detect email sending problems.

This API call requires you Juice configuration to define services.auth.url and services.auth.apikey.

const result = await loginserviceClient.sendEmail(params, subject, fromEmail, fromName, toEmail, templateName)

Registering users

Most applications allow users to sign up from their browser, but in some cases the application wants to take responsibility for signing up users. A typical case is an invitation-only business application where the administrator signs up users. In this case, the server-side of your application can use an API to add new users.

const user = {
  email: ...,
  firstName: ...,
  lastName: ...
}
const success = await loginserviceClient.registerUser(user)

This API requires you Juice configuration to define services.auth.url, services.auth.apikey and services.auth.returnURL.