@opplysningen1881/inn-js

1.2.0 • Public • Published

INN JS Library

Framework independent library for integrating web applications with Opplysningen INN Single Sign-On solution.

Registering a new application

Information concerning registering a new application with Opplysningen INN can be found in Opplysningen INN Single Sign-On documentation

Installation

The INN JS Library is available through NPM, and can be installed either using npm or yarn

npm

$ npm install @opplysningen1881/inn-js

Usage

Initialize the client

import innClient from '@opplysningen1881/inn-js';

innClient.init({
    appName: 'Example app', // Name of the application registered through Opplysningen INN
    mode: 'development' // Or production
});

Override the INN environment URLs

Usually the INN service URLs are decided based on the client mode. The URLs may be overriden through three optional configuration properties. See example below:

import innClient from '@opplysningen1881/inn-js';

innClient.init({
    appName: 'Example app', // Name of the application registered through Opplysningen INN
    mode: 'development', // Or production
    requireConsent: true, // Used for sharing user information with the given application
    profileUrl: 'https://inn-override-sso.opplysningen.no/oidsso/js/inn/inn-background.png', // Overrides the default mode configuration
    profileBackgroundUrl: 'https://inn-override-sso.opplysningen.no/oidsso/welcome', // Overrides the default mode configuration
    proxyUrl: 'https://inn-override-spaproxy.opplysningen.no/proxy' // Overrides the default mode configuration
});

The library must also be allowed to work with your application through query params. This is used for when the user does not want to register, i.e. "Continue without registration". To enable this, go to INN Self Service and add the application tag ALLOWEDQUERYPARAMS with value code;firstName;lastName;streetAddress;emailAddress;phoneNumber;zipcode;additionalAddressInfo;Deliverytime;pickupPoint.

Add login button to your application

// HTML
<div id="container-for-login-button"></div>

// JavaScript
import innClient from '@opplysningen1881/inn-js';

function handleSuccess(token) {
    // Code for handling login success
}

function handleError() {
    // Code for handling login error
}

innClient.addLoginButtonTo('container-for-login-button', handleSuccess, handleError);

Add the INN checkout button to your application

// HTML
<div id="container-for-checkout-button"></div>

// JavaScript
import innClient from '@opplysningen1881/inn-js';

function handleSuccess(token) {
    // Code for handling checkout success
}

function handleError() {
    // Code for handling login error
}

innClient.addCheckoutButtonTo('container-for-checkout-button', handleSuccess, handlerError);

Fetching contact information

import innClient from '@opplysningen1881/inn-js';

async function fetchContactInfo() {
    try {
        const contactInfo = await innClient.getContactInfo();
        return contactInfo
    } catch (err) {
        // Handle error
    }
}

Fetching delivery information

import innClient from '@opplysningen1881/inn-js';

async function fetchDeliveryInfo() {
    try {
        const deliveryInfo = await innClient.getDeliveryInfo();
        return deliveryInfo;
    } catch (err) {
        // Handle error
    }
};

Fetching token for authorization to backend services

import innClient from '@opplysningen1881/inn-js';

innClient.getToken(); // Add as HTTP header (Authorization: Bearer <token>)

Contributing

If you want to contribute, please submit a pull request for review. If you have questions or suggestions, please submit an issue.

Setup

$ npm install

Test

Install Jest, then run with npm test.

$ npm test

Build

$ npm run build

License

Apache License 2.0. See LICENSE.md for details

Dependents (0)

Package Sidebar

Install

npm i @opplysningen1881/inn-js

Weekly Downloads

14

Version

1.2.0

License

Apache-2.0

Unpacked Size

89.7 kB

Total Files

77

Last publish

Collaborators

  • opplysningen1881