{"version":3,"file":"chunks/663.500ca6.js","mappings":"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","sources":["webpack:///./components/Auth/OAuth.ts"],"sourcesContent":["import _ from 'lodash';\r\nimport { denormalizeUrl } from '../../libs/utils';\r\n\r\nimport Oidc from 'oidc-client';\r\n\r\nexport default class OAuth {\r\n\tuser: any;\r\n\toptions: any;\r\n\tmanager: any;\r\n\r\n\tconstructor(options = {}) {\r\n\t\tthis.user = null;\r\n\r\n\t\tthis.options = _.merge(\r\n\t\t\t{\r\n\t\t\t\tclient: null,\r\n\t\t\t\tauthority: null,\r\n\r\n\t\t\t\tnotificationElementClassName: 'app',\r\n\r\n\t\t\t\toidc: {}\r\n\t\t\t},\r\n\t\t\toptions\r\n\t\t);\r\n\r\n\t\tthis.options.oidc = _.merge(\r\n\t\t\t{\r\n\t\t\t\tauthority: this.options.authority,\r\n\t\t\t\tclient_id: this.options.client,\r\n\r\n\t\t\t\tredirect_uri: denormalizeUrl(this.root).toLowerCase(),\r\n\t\t\t\tpost_logout_redirect_uri: denormalizeUrl(\r\n\t\t\t\t\tthis.root\r\n\t\t\t\t).toLowerCase(),\r\n\r\n\t\t\t\tresponse_type: 'code',\r\n\t\t\t\tscope: 'openid profile workzone offline_access',\r\n\r\n\t\t\t\tmonitorSession: false\r\n\t\t\t},\r\n\t\t\tthis.options.oidc\r\n\t\t);\r\n\t}\r\n\r\n\tget host() {\r\n\t\treturn [window.location.protocol, window.location.host].join('//');\r\n\t}\r\n\r\n\tget root() {\r\n\t\treturn [\r\n\t\t\twindow.location.protocol,\r\n\t\t\t[\r\n\t\t\t\twindow.location.host,\r\n\t\t\t\twindow.location.pathname.substr(\r\n\t\t\t\t\t1,\r\n\t\t\t\t\twindow.location.pathname.lastIndexOf('/')\r\n\t\t\t\t)\r\n\t\t\t]\r\n\t\t\t\t.filter(Boolean)\r\n\t\t\t\t.join('/')\r\n\t\t].join('//');\r\n\t}\r\n\r\n\tget isLoggedIn() {\r\n\t\treturn !!this.user;\r\n\t}\r\n\r\n\tstatic normalize(path: string) {\r\n\t\treturn path\r\n\t\t\t.split('://')\r\n\t\t\t.map(p => p.split('/').filter(Boolean).join('/'))\r\n\t\t\t.join('://');\r\n\t}\r\n\r\n\tstatic denormalize(path: string) {\r\n\t\treturn path && path.substr(-1) !== '/' ? `${path}/` : path;\r\n\t}\r\n\r\n\tsetUser(user: any) {\r\n\t\tthis.user = user;\r\n\t}\r\n\r\n\tgetAuthorizationHeader() {\r\n\t\treturn this.getToken().then((response: any) =>\r\n\t\t\tthis.buildAuthorizationHeader(response)\r\n\t\t);\r\n\t}\r\n\r\n\tbuildAuthorizationHeader(token: any) {\r\n\t\treturn {\r\n\t\t\tAuthorization: [token?.token_type, token?.access_token]\r\n\t\t\t\t.filter(Boolean)\r\n\t\t\t\t.join(' ')\r\n\t\t};\r\n\t}\r\n\r\n\tgetToken() {\r\n\t\tif (this.isLoggedIn && !this.user.expired) {\r\n\t\t\treturn Promise.resolve(this.user);\r\n\t\t} else {\r\n\t\t\treturn this.manager\r\n\t\t\t\t.signinSilent()\r\n\t\t\t\t.then((user: any) => {\r\n\t\t\t\t\tthis.setUser(user);\r\n\r\n\t\t\t\t\treturn this.user;\r\n\t\t\t\t})\r\n\t\t\t\t.catch(() => this.relogin());\r\n\t\t}\r\n\t}\r\n\r\n\tgetAccessToken() {\r\n\t\treturn this.getToken().then((token: any) => token?.access_token);\r\n\t}\r\n\r\n\tinit() {\r\n\t\tthis.manager = new Oidc.UserManager(this.options.oidc);\r\n\r\n\t\treturn this.manager\r\n\t\t\t.getUser()\r\n\t\t\t.then((user: any) => {\r\n\t\t\t\tif (user) {\r\n\t\t\t\t\tif (user.expired) {\r\n\t\t\t\t\t\tthis.setUser(null);\r\n\r\n\t\t\t\t\t\tthis.manager.removeUser();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t//this.manager.clearStaleState();\r\n\r\n\t\t\t\t\t\tthis.setUser(user);\r\n\r\n\t\t\t\t\t\tthis.restoreLocation();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!this.isLoggedIn) {\r\n\t\t\t\t\treturn this.relogin();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.catch((e: any) => {\r\n\t\t\t\tthis.restoreLocation();\r\n\r\n\t\t\t\tif (e.message === 'invalid_client') {\r\n\t\t\t\t\treturn this.notifyLoginFailed(e.message);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.manager.signinRedirect();\r\n\t\t\t});\r\n\t}\r\n\r\n\tlogin() {\r\n\t\tif (this.manager) {\r\n\t\t\tif (this.isAuthorized()) {\r\n\t\t\t\treturn this.manager\r\n\t\t\t\t\t.signinCallback()\r\n\t\t\t\t\t.then((user: any) => {\r\n\t\t\t\t\t\tthis.setUser(user);\r\n\r\n\t\t\t\t\t\tthis.restoreLocation();\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.catch((e: any) => this.notifyLoginFailed(e));\r\n\t\t\t} else {\r\n\t\t\t\tconst state = { location: window.location.href };\r\n\r\n\t\t\t\treturn this.manager.signinRedirect({\r\n\t\t\t\t\tstate,\r\n\t\t\t\t\tuseReplaceToNavigate: true\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trelogin() {\r\n\t\tthis.setUser(null);\r\n\r\n\t\treturn this.manager?.clearStaleState().then(() => this.login());\r\n\t}\r\n\r\n\tlogout() {\r\n\t\treturn this.manager\r\n\t\t\t?.clearStaleState()\r\n\t\t\t.then(() => this.manager.signoutRedirect());\r\n\t}\r\n\r\n\trestoreLocation() {\r\n\t\tlet location = this.root; // replacement should default to app host, not endpoint host\r\n\r\n\t\tif (\r\n\t\t\tthis.options.oidc.response_type === 'code' &&\r\n\t\t\twindow.location.hash\r\n\t\t) {\r\n\t\t\t// we have route, and we must return to it back\r\n\t\t\tlocation = [OAuth.normalize(location), window.location.hash].join(\r\n\t\t\t\t'/'\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tif (this.user?.state?.location) {\r\n\t\t\tlocation = this.user.state.location;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\t// return back to original location\r\n\t\t\twindow.history.replaceState({}, window.document.title, location);\r\n\t\t} catch {\r\n\t\t\t/* fail silently */\r\n\t\t}\r\n\t}\r\n\r\n\tisAuthorized() {\r\n\t\tif (this.options.oidc.response_type === 'code') {\r\n\t\t\tconst authResponse = OAuth.readQuery();\r\n\r\n\t\t\treturn !!authResponse.code;\r\n\t\t} else {\r\n\t\t\tconst authResponse = OAuth.readHash();\r\n\r\n\t\t\treturn !!(authResponse.id_token && authResponse.access_token);\r\n\t\t}\r\n\t}\r\n\r\n\tnotifyLoginFailed(e: any = null) {\r\n\t\treturn this.notify({\r\n\t\t\tmessage: [\r\n\t\t\t\t'You do not have permission to view this page using the credentials that you supplied',\r\n\t\t\t\te\r\n\t\t\t]\r\n\t\t\t\t.filter(Boolean)\r\n\t\t\t\t.join('
')\r\n\t\t});\r\n\t}\r\n\r\n\tnotify(e: any) {\r\n\t\tconst elm = document.getElementsByClassName(\r\n\t\t\tthis.options.notificationElementClassName\r\n\t\t);\r\n\r\n\t\tif (elm.length) {\r\n\t\t\telm[0].outerHTML = `