UNPKG

backbone.msal

Version:

Microsoft Authentication Library (MSAL) for Backbone

150 lines 8.63 kB
/*! * dist/backbone.msal * https://github.com/RobinHerbots/backbone.msal#readme * Copyright (c) 2010 - 2020 * Licensed under the MIT license * Version: 1.0.5 */ !function webpackUniversalModuleDefinition(root, factory) { if ("object" == typeof exports && "object" == typeof module) module.exports = factory(require("underscore"), require("backbone"), require("msal"), require("jquery")); else if ("function" == typeof define && define.amd) define([ "underscore", "backbone", "msal", "jquery" ], factory); else { var a = "object" == typeof exports ? factory(require("underscore"), require("backbone"), require("msal"), require("jquery")) : factory(root.underscore, root.backbone, root.msal, root.jquery); for (var i in a) ("object" == typeof exports ? exports : root)[i] = a[i]; } }(window, function(__WEBPACK_EXTERNAL_MODULE__1__, __WEBPACK_EXTERNAL_MODULE__2__, __WEBPACK_EXTERNAL_MODULE__3__, __WEBPACK_EXTERNAL_MODULE__4__) { return modules = [ function(module, exports, __webpack_require__) { "use strict"; var _ = __webpack_require__(1), Backbone = __webpack_require__(2), Msal = __webpack_require__(3), $ = __webpack_require__(4); Backbone.MsalRouter = function(options) { var _arguments = arguments, _this = this; options = options || {}; var that = this; this.preinitialize.apply(this, arguments), options.routes && (this.routes = options.routes), this._bindRoutes(), this._initAuth().then(function(response) { that.initialize.apply(that, _arguments); }); }, Backbone.MsalRouter.prototype = Backbone.Router.prototype, Backbone.MsalRouter.extend = Backbone.Router.extend, Object.defineProperty(Msal.UserAgentApplication.prototype, "IsTokenExpired", { get: function get() { var user = this.getAccount(); if (user) return Math.floor(Date.now() / 1e3) > user.idToken.exp; }, set: function set() {}, enumerable: !0, configurable: !1 }), Backbone.MsalRouter = Backbone.MsalRouter.extend({ _initAuth: function _initAuth() { var _this2 = this, that = this; return new Promise(function(resolve, reject) { _this2.msalConfig ? ($.isFunction(_this2.msalConfig) && (_this2.msalConfig = _this2.msalConfig()), _this2.authContext = new Msal.UserAgentApplication(_this2.msalConfig), Backbone.sync.authContext = _this2.authContext, Backbone.sync.Headers = _this2.Headers, _this2.authContext.handleRedirectCallback(function(err, response) { err ? (that.authContext.getLogger().error(err), reject(err)) : resolve(response); }), _this2.authContext.isCallback(window.location.hash) || resolve()) : resolve(); }); }, _auth: function _auth(params, next) { return !this.authContext || this.authContext.getAccount() || this.isAnonymous ? next() : void this.authContext.loginRedirect({}); }, before: function before(params, next) { return next(); }, after: function after() {}, route: function route(_route, name, callback) { _.isRegExp(_route) || (_route = this._routeToRegExp(_route)), _.isFunction(name) && (callback = name, name = ""), callback = callback || this[name]; var router = this; return Backbone.history.route(_route, function(fragment) { var args = router._extractParameters(_route, fragment), next = function next() { callback && callback.apply(router, args), router.trigger.apply(router, [ "route:" + name ].concat(args)), router.trigger("route", name, args), Backbone.history.trigger("route", router, name, args), router.after.apply(router, args); }, before = function before() { router.before.apply(router, [ args, next ]); }; router._auth.apply(router, [ args, before ]); }), router; } }), Object.defineProperty(Backbone.MsalRouter.prototype, "isAnonymous", { get: function get() { return !this.authContext || null === this.authContext.getScopesForEndpoint(window.location.href); }, set: function set() {}, enumerable: !0, configurable: !1 }); var originXMLHttpRequest_open = XMLHttpRequest.prototype.open; XMLHttpRequest.prototype.open = function() { return this._url = arguments[1], originXMLHttpRequest_open.apply(this, arguments); }; var originXMLHttpRequest_send = XMLHttpRequest.prototype.send; XMLHttpRequest.prototype.send = function() { var args = arguments, xhr = this, authContext = Backbone.sync.authContext, scopes = authContext ? authContext.getScopesForEndpoint(this._url) : null; if (1 == xhr.readyState && Array.isArray(Backbone.sync.Headers) && Backbone.sync.Headers.forEach(function(h) { return xhr.setRequestHeader(h.name, h.value); }), null === scopes) return originXMLHttpRequest_send.apply(this, args); authContext.acquireTokenSilent({ scopes: scopes }).then(function(response) { return 1 == xhr.readyState ? xhr.setRequestHeader("Authorization", "Bearer " + response.accessToken) : xhr.onreadystatechange = function() { 1 == xhr.readyState && xhr.setRequestHeader("Authorization", "Bearer " + response.accessToken); }, originXMLHttpRequest_send.apply(xhr, args); }, function(err) { authContext.getLogger().error(err); }); }, module.exports = { Msal: Msal, Backbone: Backbone }; }, function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE__1__; }, function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE__2__; }, function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE__3__; }, function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE__4__; } ], installedModules = {}, __webpack_require__.m = modules, __webpack_require__.c = installedModules, __webpack_require__.d = function(exports, name, getter) { __webpack_require__.o(exports, name) || Object.defineProperty(exports, name, { enumerable: !0, get: getter }); }, __webpack_require__.r = function(exports) { "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(exports, "__esModule", { value: !0 }); }, __webpack_require__.t = function(value, mode) { if (1 & mode && (value = __webpack_require__(value)), 8 & mode) return value; if (4 & mode && "object" == typeof value && value && value.__esModule) return value; var ns = Object.create(null); if (__webpack_require__.r(ns), Object.defineProperty(ns, "default", { enumerable: !0, value: value }), 2 & mode && "string" != typeof value) for (var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); return ns; }, __webpack_require__.n = function(module) { var getter = module && module.__esModule ? function getDefault() { return module.default; } : function getModuleExports() { return module; }; return __webpack_require__.d(getter, "a", getter), getter; }, __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }, __webpack_require__.p = "", __webpack_require__(__webpack_require__.s = 0); function __webpack_require__(moduleId) { if (installedModules[moduleId]) return installedModules[moduleId].exports; var module = installedModules[moduleId] = { i: moduleId, l: !1, exports: {} }; return modules[moduleId].call(module.exports, module, module.exports, __webpack_require__), module.l = !0, module.exports; } var modules, installedModules; });