UNPKG

aladinnetwork-blockstack

Version:

The Aladin Javascript library for authentication, identity, and storage.

107 lines (93 loc) 3.12 kB
import { DEFAULT_CORE_NODE, DEFAULT_SCOPE, DEFAULT_ALADIN_HOST, AuthScope } from './authConstants' import { getGlobalObject } from '../utils' /** * Configuration data for the current app. * * On browser platforms, creating an instance of this * class without any arguments will use * `window.location.origin` as the app domain. * On non-browser platforms, you need to * specify an app domain as the second argument. * */ export class AppConfig { /** * Aladin apps are uniquely identified by their app domain. * */ appDomain: string /** * An array of string representing permissions requested by the app. * */ scopes: Array<AuthScope | string> /** * Path on app domain to redirect users to after authentication. The * authentication response token will be postpended in a query. * */ redirectPath: string /** * Path relative to app domain of app's manifest file. * * This file needs to have CORS headers set so that it can be fetched * from any origin. Typically this means return the header `Access-Control-Allow-Origin: *`. * */ manifestPath: string /** * The URL of Aladin core node to use for this app. If this is * `null`, the core node specified by the user or default core node * will be used. * */ coreNode: string /** * The URL of a web-based Aladin Authenticator to use in the event * the user doesn't have Aladin installed on their machine. If this * is not specified, the current default in this library will be used. * */ authenticatorURL?: string /** * @param {Array<string>} scopes - permissions this app is requesting * @param {string} appDomain - the app domain * @param {string} redirectPath - path on app domain to redirect users to after authentication * @param {string} manifestPath - path relative to app domain of app's manifest file * @param {string} coreNode - override the default or user selected core node * @param {string} authenticatorURL - the web-based fall back authenticator * ([[DEFAULT_ALADIN_HOST]]) */ constructor(scopes: Array<string> = DEFAULT_SCOPE.slice(), appDomain: string = getGlobalObject('location', { returnEmptyObject: true }).origin, redirectPath: string = '', manifestPath: string = '/manifest.json', coreNode: string | null = null, authenticatorURL: string = DEFAULT_ALADIN_HOST) { this.appDomain = appDomain this.scopes = scopes this.redirectPath = redirectPath this.manifestPath = manifestPath if (!coreNode) { this.coreNode = DEFAULT_CORE_NODE } else { this.coreNode = coreNode } this.authenticatorURL = authenticatorURL } /** * The location to which the authenticator should * redirect the user. * @returns {string} - URI */ redirectURI(): string { return `${this.appDomain}${this.redirectPath}` } /** * The location of the app's manifest file. * @returns {string} - URI */ manifestURI(): string { return `${this.appDomain}${this.manifestPath}` } }