UNPKG

@jbrowse/plugin-authentication

Version:

JBrowse 2 Authentication

55 lines (54 loc) 2.12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const configuration_1 = require("@jbrowse/core/configuration"); const models_1 = require("@jbrowse/core/pluggableElementTypes/models"); const mobx_state_tree_1 = require("mobx-state-tree"); const HTTPBasicLoginForm_1 = require("./HTTPBasicLoginForm"); const util_1 = require("../util"); const stateModelFactory = (configSchema) => { return models_1.InternetAccount.named('HTTPBasicInternetAccount') .props({ type: mobx_state_tree_1.types.literal('HTTPBasicInternetAccount'), configuration: (0, configuration_1.ConfigurationReference)(configSchema), }) .views(self => ({ get validateWithHEAD() { return (0, configuration_1.getConf)(self, 'validateWithHEAD'); }, })) .actions(self => ({ getTokenFromUser(resolve, reject) { const { session } = (0, mobx_state_tree_1.getRoot)(self); session.queueDialog((doneCallback) => [ HTTPBasicLoginForm_1.HTTPBasicLoginForm, { internetAccountId: self.internetAccountId, handleClose: (token) => { if (token) { resolve(token); } else { reject(new Error('User cancelled entry')); } doneCallback(); }, }, ]); }, async validateToken(token, location) { if (!self.validateWithHEAD) { return token; } const newInit = self.addAuthHeaderToInit({ method: 'HEAD' }, token); const response = await fetch(location.uri, newInit); if (!response.ok) { throw new Error(await (0, util_1.getResponseError)({ response, reason: 'Error validating token', })); } return token; }, })); }; exports.default = stateModelFactory;