@leapdev/auth-agent 2.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,11 @@
1
+ # auth-agent
2
+
3
+ This library was generated with [Nx](https://nx.dev).
4
+
5
+ ## Building
6
+
7
+ Run `nx build auth-agent` to build the library.
8
+
9
+ ## Running unit tests
10
+
11
+ Run `nx test auth-agent` to execute the unit tests via [Jest](https://jestjs.io).
package/package.json ADDED
@@ -0,0 +1,18 @@
1
+ {
2
+ "name": "@leapdev/auth-agent",
3
+ "version": "2.0.0-alpha.0",
4
+ "type": "commonjs",
5
+ "description": "LEAP Auth Agent",
6
+ "license": "LEAP Legal Software, PTY LTD",
7
+ "main": "./src/index.js",
8
+ "typings": "./src/index.d.ts",
9
+ "dependencies": {},
10
+ "peerDependencies": {
11
+ "lodash": "^4.17.21",
12
+ "crypto-random-string": "^5.0.0",
13
+ "js-sha256": "^0.9.0",
14
+ "uuid": "^8.3.2",
15
+ "pubnub": "^7.0.1",
16
+ "tslib": "^2.3.0"
17
+ }
18
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './lib/auth-agent';
package/src/index.js ADDED
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./lib/auth-agent"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/auth-agent/src/index.ts"],"names":[],"mappings":";;;AAAA,2DAAiC"}
@@ -0,0 +1,22 @@
1
+ import { AccountLink, HookName, InitOptions, UserInfo } from './types';
2
+ export declare const AuthAgent: {
3
+ init: (options: InitOptions) => Promise<string | undefined | boolean>;
4
+ registerHook: (hookName: HookName, callback: (params?: any) => any) => void;
5
+ login: () => Promise<string | undefined>;
6
+ logout: (force?: boolean, redirectUrl?: string | undefined) => Promise<void>;
7
+ getAccessToken: () => string;
8
+ getDecodedAccessToken: () => any;
9
+ userInfo: () => Promise<UserInfo>;
10
+ linkUser: (redirectUrl?: string | undefined, newWindow?: boolean | undefined, callback?: any) => void;
11
+ unlinkUser: (redirectUrl?: string | undefined, newWindow?: boolean | undefined, callback?: any) => void;
12
+ getCloudProviderToken: (jti?: string | undefined) => Promise<any>;
13
+ cloudProviderUserInfo: () => Promise<any>;
14
+ cloudProviderReauthenticate: (nonce: string | undefined, redirectUrl: string | undefined, newWindow: boolean | undefined, callback: any) => Promise<void>;
15
+ statusAdminConsent: () => Promise<boolean>;
16
+ getAdminConsent: (domain?: string | undefined, redirectUrl?: string | undefined, newWindow?: boolean | undefined, callback?: any) => void;
17
+ revokeAdminConsent: () => Promise<boolean>;
18
+ getLinkMap: (allUsers?: boolean | undefined) => Promise<AccountLink[]>;
19
+ setLinkMap: (linkMap: AccountLink[]) => Promise<void>;
20
+ authoriseSupport: (code: string, duration: number) => Promise<string>;
21
+ changePassword: (redirectUrl?: string | undefined, newWindow?: boolean | undefined, callback?: any) => void;
22
+ };
@@ -0,0 +1,188 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuthAgent = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const lodash_1 = require("lodash");
6
+ const authentication_1 = require("./authentication");
7
+ const idle_timer_1 = require("./idle-timer");
8
+ let auth;
9
+ const init = (options) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
10
+ auth = new authentication_1.Authentication(options);
11
+ if (!auth) {
12
+ return false;
13
+ }
14
+ if (auth.autoLogout()) {
15
+ const timeoutInMinutes = auth.idleTimeoutInMinutes();
16
+ const idleTimer = new idle_timer_1.IdleTimer({ timeoutInMinutes, onTimeout: logout });
17
+ idleTimer.tracker();
18
+ }
19
+ //* check if authCode in URL
20
+ const done = yield auth.checkAuthCode();
21
+ if (done) {
22
+ return getAccessToken();
23
+ }
24
+ const autoLogin = auth.autoLogin();
25
+ if (autoLogin) {
26
+ login();
27
+ }
28
+ return true;
29
+ });
30
+ const getAccessToken = () => {
31
+ return !auth ? '' : auth.getAccessToken();
32
+ };
33
+ const login = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
34
+ if (!auth) {
35
+ throw Error('Not init yet');
36
+ }
37
+ return auth.login().then((token) => {
38
+ const hooks = auth === null || auth === void 0 ? void 0 : auth.getHooks();
39
+ const afterLogin = token && hooks && (0, lodash_1.isFunction)(hooks.afterLogin)
40
+ ? hooks.afterLogin(token)
41
+ : false;
42
+ return Promise.resolve(afterLogin).then(() => {
43
+ if (token && auth) {
44
+ auth.initNotification();
45
+ }
46
+ return token;
47
+ });
48
+ });
49
+ });
50
+ const logout = (force = false, redirectUrl) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
51
+ if (!auth) {
52
+ throw Error('Not init yet');
53
+ }
54
+ const hooks = auth === null || auth === void 0 ? void 0 : auth.getHooks();
55
+ const beforeLogout = hooks && (0, lodash_1.isFunction)(hooks.beforeLogout) ? hooks.beforeLogout() : false;
56
+ return Promise.resolve(beforeLogout)
57
+ .then(() => {
58
+ if (auth) {
59
+ auth.destroyNotification();
60
+ auth.logout(force, redirectUrl);
61
+ }
62
+ return;
63
+ })
64
+ .catch(function (err) {
65
+ console.error('Error while logging out : ', err);
66
+ throw Error(err);
67
+ });
68
+ });
69
+ const registerHook = (hookName, callback) => {
70
+ if (!auth) {
71
+ throw Error('Not init yet');
72
+ }
73
+ if (auth) {
74
+ auth.setHook({ name: hookName, callback });
75
+ }
76
+ return;
77
+ };
78
+ const getDecodedAccessToken = () => {
79
+ if (!auth) {
80
+ throw Error('Not init yet');
81
+ }
82
+ return auth.getDecodedAccessToken();
83
+ };
84
+ const userInfo = () => {
85
+ if (!auth) {
86
+ throw Error('Not init yet');
87
+ }
88
+ return auth.getUserInfo();
89
+ };
90
+ const linkUser = (redirectUrl, newWindow, callback) => {
91
+ if (!auth) {
92
+ throw Error('Not init yet');
93
+ }
94
+ auth.linkUser({ redirectUrl, newWindow, callback });
95
+ };
96
+ const unlinkUser = (redirectUrl, newWindow, callback) => {
97
+ if (!auth) {
98
+ throw Error('Not init yet');
99
+ }
100
+ auth.unlinkUser({ redirectUrl, newWindow, callback });
101
+ };
102
+ const getCloudProviderToken = (jti) => {
103
+ if (!auth) {
104
+ throw Error('Not init yet');
105
+ }
106
+ return auth.getCloudProviderToken(jti);
107
+ };
108
+ const cloudProviderUserInfo = () => {
109
+ if (!auth) {
110
+ throw Error('Not init yet');
111
+ }
112
+ return auth.cloudProviderUserInfo();
113
+ };
114
+ const cloudProviderReauthenticate = (nonce, redirectUrl, newWindow, callback) => {
115
+ if (!auth) {
116
+ throw Error('Not init yet');
117
+ }
118
+ return auth.cloudProviderReauthenticate({
119
+ redirectUrl,
120
+ nonce,
121
+ newWindow,
122
+ callback,
123
+ });
124
+ };
125
+ const statusAdminConsent = () => {
126
+ if (!auth) {
127
+ throw Error('Not init yet');
128
+ }
129
+ return auth.statusAdminConsent();
130
+ };
131
+ const getAdminConsent = (domain, redirectUrl, newWindow, callback) => {
132
+ if (!auth) {
133
+ throw Error('Not init yet');
134
+ }
135
+ auth.getAdminConsent({ domain, redirectUrl, newWindow, callback });
136
+ };
137
+ const revokeAdminConsent = () => {
138
+ if (!auth) {
139
+ throw Error('Not init yet');
140
+ }
141
+ return auth.revokeAdminConsent();
142
+ };
143
+ const getLinkMap = (allUsers) => {
144
+ if (!auth) {
145
+ throw Error('Not init yet');
146
+ }
147
+ return auth.getLinkMap(allUsers);
148
+ };
149
+ const setLinkMap = (linkMap) => {
150
+ if (!auth) {
151
+ throw Error('Not init yet');
152
+ }
153
+ return auth.setLinkMap(linkMap);
154
+ };
155
+ const authoriseSupport = (code, duration) => {
156
+ if (!auth) {
157
+ throw Error('Not init yet');
158
+ }
159
+ return auth.authoriseSupport({ code, duration });
160
+ };
161
+ const changePassword = (redirectUrl, newWindow, callback) => {
162
+ if (!auth) {
163
+ throw Error('Not init yet');
164
+ }
165
+ auth.changePassword({ redirectUrl, newWindow, callback });
166
+ };
167
+ exports.AuthAgent = {
168
+ init,
169
+ registerHook,
170
+ login,
171
+ logout,
172
+ getAccessToken,
173
+ getDecodedAccessToken,
174
+ userInfo,
175
+ linkUser,
176
+ unlinkUser,
177
+ getCloudProviderToken,
178
+ cloudProviderUserInfo,
179
+ cloudProviderReauthenticate,
180
+ statusAdminConsent,
181
+ getAdminConsent,
182
+ revokeAdminConsent,
183
+ getLinkMap,
184
+ setLinkMap,
185
+ authoriseSupport,
186
+ changePassword,
187
+ };
188
+ //# sourceMappingURL=auth-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-agent.js","sourceRoot":"","sources":["../../../../../packages/auth-agent/src/lib/auth-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { AccountLink, ReauthenticateLink, UserInfo } from './types';
2
+ export declare class LeapAuthService {
3
+ #private;
4
+ constructor(authHost: string, clientId: string);
5
+ userInfo: (token: string | undefined) => Promise<UserInfo>;
6
+ linkUser: (params: {
7
+ redirectUrl: string;
8
+ jti: string;
9
+ newWindow?: boolean;
10
+ callback?: any;
11
+ }) => void;
12
+ unlinkUser: (params: {
13
+ redirectUrl: string;
14
+ jti: string;
15
+ newWindow?: boolean;
16
+ callback?: any;
17
+ }) => void;
18
+ getCloudProviderToken: (token: string, jti?: string | undefined) => Promise<any>;
19
+ cloudProviderUserInfo: (token: string) => Promise<any>;
20
+ cloudProviderReauthenticate: (params: {
21
+ redirectUrl: string;
22
+ nonce: string;
23
+ newWindow?: boolean;
24
+ callback?: any;
25
+ }) => void;
26
+ cloudProviderReauthenticateLink: (token: string) => Promise<ReauthenticateLink>;
27
+ statusAdminConsent: (token: string) => Promise<boolean>;
28
+ getAdminConsent: (params: {
29
+ redirectUrl: string;
30
+ domain?: string;
31
+ newWindow?: boolean;
32
+ callback?: any;
33
+ }) => void;
34
+ revokeAdminConsent: (token: string) => Promise<boolean>;
35
+ getLinkMap: (token: string, allUsers: boolean) => Promise<AccountLink[]>;
36
+ setLinkMap: (token: string, linkMap: Array<AccountLink>) => Promise<void>;
37
+ authoriseSupport: (token: string, params: {
38
+ code: string;
39
+ duration: number;
40
+ }) => Promise<string>;
41
+ changePassword: (params: {
42
+ redirectUrl: string;
43
+ newWindow?: boolean;
44
+ callback?: any;
45
+ }) => void;
46
+ }
@@ -0,0 +1,275 @@
1
+ "use strict";
2
+ var _LeapAuthService_authHost, _LeapAuthService_clientId, _LeapAuthService_xhr, _LeapAuthService_redirectUrl;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.LeapAuthService = void 0;
5
+ const tslib_1 = require("tslib");
6
+ const lodash_1 = require("lodash");
7
+ const LEAP_AUTH_CLOSE_WINDOW_URL = '/oauth/close';
8
+ class LeapAuthService {
9
+ constructor(authHost, clientId) {
10
+ _LeapAuthService_authHost.set(this, void 0);
11
+ _LeapAuthService_clientId.set(this, void 0);
12
+ this.userInfo = (token) => {
13
+ return new Promise((resolve, reject) => {
14
+ tslib_1.__classPrivateFieldGet(this, _LeapAuthService_xhr, "f").call(this, {
15
+ method: 'GET',
16
+ endpoint: '/api/userinfo',
17
+ options: null,
18
+ accessToken: token,
19
+ }, (response, status) => {
20
+ if (status === 200)
21
+ return resolve(response);
22
+ else
23
+ return reject(response);
24
+ });
25
+ });
26
+ };
27
+ this.linkUser = (params) => {
28
+ const { jti, newWindow, callback } = params;
29
+ const redirectUrl = newWindow
30
+ ? tslib_1.__classPrivateFieldGet(this, _LeapAuthService_authHost, "f") + LEAP_AUTH_CLOSE_WINDOW_URL
31
+ : params.redirectUrl;
32
+ const requestUrl = `/cloudprovider/link?client_id=${tslib_1.__classPrivateFieldGet(this, _LeapAuthService_clientId, "f")}&prompt=none&jti=${jti}&callback=${redirectUrl}`;
33
+ tslib_1.__classPrivateFieldGet(this, _LeapAuthService_redirectUrl, "f").call(this, { requestUrl, newWindow, callback });
34
+ };
35
+ this.unlinkUser = (params) => {
36
+ const { jti, newWindow, callback } = params;
37
+ const redirectUrl = newWindow
38
+ ? tslib_1.__classPrivateFieldGet(this, _LeapAuthService_authHost, "f") + LEAP_AUTH_CLOSE_WINDOW_URL
39
+ : params.redirectUrl;
40
+ const requestUrl = `/cloudprovider/unlink?client_id=${tslib_1.__classPrivateFieldGet(this, _LeapAuthService_clientId, "f")}&jti=${jti}&callback=${redirectUrl}`;
41
+ tslib_1.__classPrivateFieldGet(this, _LeapAuthService_redirectUrl, "f").call(this, { requestUrl, newWindow, callback });
42
+ };
43
+ this.getCloudProviderToken = (token, jti) => {
44
+ const url = '/cloudprovider/accesstoken' + (jti ? '/' + jti : '');
45
+ return new Promise((resolve, reject) => {
46
+ tslib_1.__classPrivateFieldGet(this, _LeapAuthService_xhr, "f").call(this, {
47
+ method: 'GET',
48
+ endpoint: url,
49
+ options: null,
50
+ accessToken: token,
51
+ }, (response, status) => {
52
+ if (status === 200)
53
+ return resolve(response);
54
+ else
55
+ return reject(response);
56
+ });
57
+ });
58
+ };
59
+ this.cloudProviderUserInfo = (token) => {
60
+ return new Promise((resolve, reject) => {
61
+ tslib_1.__classPrivateFieldGet(this, _LeapAuthService_xhr, "f").call(this, {
62
+ method: 'GET',
63
+ endpoint: '/cloudprovider/userinfo',
64
+ options: null,
65
+ accessToken: token,
66
+ }, (response, status) => {
67
+ if (status === 200)
68
+ return resolve(response);
69
+ else
70
+ return reject(response);
71
+ });
72
+ });
73
+ };
74
+ this.cloudProviderReauthenticate = (params) => {
75
+ const { nonce, newWindow, callback } = params;
76
+ const redirectUrl = newWindow
77
+ ? tslib_1.__classPrivateFieldGet(this, _LeapAuthService_authHost, "f") + LEAP_AUTH_CLOSE_WINDOW_URL
78
+ : params.redirectUrl;
79
+ const requestUrl = `/cloudprovider/reauthenticate?nonce=${nonce}&redirectUrl=${redirectUrl}`;
80
+ tslib_1.__classPrivateFieldGet(this, _LeapAuthService_redirectUrl, "f").call(this, { requestUrl, newWindow, callback });
81
+ };
82
+ this.cloudProviderReauthenticateLink = (token) => {
83
+ return new Promise((resolve, reject) => {
84
+ tslib_1.__classPrivateFieldGet(this, _LeapAuthService_xhr, "f").call(this, {
85
+ method: 'GET',
86
+ endpoint: '/cloudprovider/reauthenticate/link',
87
+ options: null,
88
+ accessToken: token,
89
+ }, (response, status) => {
90
+ if (status === 200)
91
+ return resolve(response);
92
+ else
93
+ return reject(response);
94
+ });
95
+ });
96
+ };
97
+ this.statusAdminConsent = (token) => {
98
+ return new Promise((resolve, reject) => {
99
+ tslib_1.__classPrivateFieldGet(this, _LeapAuthService_xhr, "f").call(this, {
100
+ method: 'GET',
101
+ endpoint: `/cloudprovider/adminconsent/status?client_id=${tslib_1.__classPrivateFieldGet(this, _LeapAuthService_clientId, "f")}`,
102
+ options: null,
103
+ accessToken: token,
104
+ }, (response, status) => {
105
+ if (status === 200)
106
+ return resolve(response);
107
+ else
108
+ return reject(response);
109
+ });
110
+ });
111
+ };
112
+ this.getAdminConsent = (params) => {
113
+ const { domain, newWindow, callback } = params;
114
+ const redirectUrl = newWindow
115
+ ? tslib_1.__classPrivateFieldGet(this, _LeapAuthService_authHost, "f") + LEAP_AUTH_CLOSE_WINDOW_URL
116
+ : params.redirectUrl;
117
+ const requestUrl = `/cloudprovider/adminconsent?client_id=${tslib_1.__classPrivateFieldGet(this, _LeapAuthService_clientId, "f")}&redirectUrl=${redirectUrl}${domain ? '&domain=' + domain : ''}`;
118
+ tslib_1.__classPrivateFieldGet(this, _LeapAuthService_redirectUrl, "f").call(this, { requestUrl, newWindow, callback });
119
+ };
120
+ this.revokeAdminConsent = (token) => {
121
+ return new Promise((resolve, reject) => {
122
+ tslib_1.__classPrivateFieldGet(this, _LeapAuthService_xhr, "f").call(this, {
123
+ method: 'DELETE',
124
+ endpoint: `/cloudprovider/adminconsent?client_id=${tslib_1.__classPrivateFieldGet(this, _LeapAuthService_clientId, "f")}`,
125
+ options: null,
126
+ accessToken: token,
127
+ }, (response, status) => {
128
+ if (status === 200)
129
+ return resolve(response);
130
+ else
131
+ return reject(response);
132
+ });
133
+ });
134
+ };
135
+ this.getLinkMap = (token, allUsers) => {
136
+ return new Promise((resolve, reject) => {
137
+ tslib_1.__classPrivateFieldGet(this, _LeapAuthService_xhr, "f").call(this, {
138
+ method: 'GET',
139
+ endpoint: `/cloudprovider/linkmap?client_id=${tslib_1.__classPrivateFieldGet(this, _LeapAuthService_clientId, "f")}${allUsers ? '&allUsers=true' : ''}`,
140
+ options: null,
141
+ accessToken: token,
142
+ }, (response, status) => {
143
+ if (status === 200)
144
+ return resolve(response);
145
+ else
146
+ return reject(response);
147
+ });
148
+ });
149
+ };
150
+ this.setLinkMap = (token, linkMap) => {
151
+ return new Promise((resolve, reject) => {
152
+ tslib_1.__classPrivateFieldGet(this, _LeapAuthService_xhr, "f").call(this, {
153
+ method: 'PUT',
154
+ endpoint: `/cloudprovider/linkmap?client_id=${tslib_1.__classPrivateFieldGet(this, _LeapAuthService_clientId, "f")}`,
155
+ options: { body: linkMap },
156
+ accessToken: token,
157
+ }, (response, status) => {
158
+ if (status === 200)
159
+ return resolve(response);
160
+ else
161
+ return reject(response);
162
+ });
163
+ });
164
+ };
165
+ this.authoriseSupport = (token, params) => {
166
+ const { code, duration } = params;
167
+ return new Promise((resolve, reject) => {
168
+ tslib_1.__classPrivateFieldGet(this, _LeapAuthService_xhr, "f").call(this, {
169
+ method: 'POST',
170
+ endpoint: `/support/authorization`,
171
+ options: {
172
+ body: {
173
+ requestCode: code,
174
+ duration,
175
+ client_id: tslib_1.__classPrivateFieldGet(this, _LeapAuthService_clientId, "f"),
176
+ },
177
+ },
178
+ accessToken: token,
179
+ }, (response, status) => {
180
+ if (status === 200)
181
+ return resolve(response);
182
+ else
183
+ return reject(response);
184
+ });
185
+ });
186
+ };
187
+ this.changePassword = (params) => {
188
+ const { newWindow, callback, redirectUrl } = params;
189
+ let changePasswordUrl = `/oauth/changepassword?client_id=${tslib_1.__classPrivateFieldGet(this, _LeapAuthService_clientId, "f")}`;
190
+ let redirect_uri = '';
191
+ let noListener = false;
192
+ if (newWindow) {
193
+ if (!!callback && typeof callback === 'function') {
194
+ redirect_uri = tslib_1.__classPrivateFieldGet(this, _LeapAuthService_authHost, "f") + LEAP_AUTH_CLOSE_WINDOW_URL;
195
+ }
196
+ else {
197
+ redirect_uri = '';
198
+ noListener = true; // open a new tab for changing password without adding an message event listener in this window
199
+ }
200
+ }
201
+ else {
202
+ redirect_uri =
203
+ tslib_1.__classPrivateFieldGet(this, _LeapAuthService_authHost, "f") +
204
+ '/oauth/logout?force=true' +
205
+ '&redirect_uri=' +
206
+ (redirectUrl || window.location.href);
207
+ }
208
+ if (redirect_uri) {
209
+ changePasswordUrl += `&redirect_uri=${encodeURIComponent(redirect_uri)}`;
210
+ }
211
+ tslib_1.__classPrivateFieldGet(this, _LeapAuthService_redirectUrl, "f").call(this, {
212
+ requestUrl: changePasswordUrl,
213
+ newWindow,
214
+ callback,
215
+ noListener,
216
+ });
217
+ };
218
+ _LeapAuthService_xhr.set(this, (params, onload) => {
219
+ const { method, endpoint, accessToken } = params;
220
+ let { options } = params;
221
+ options = (0, lodash_1.merge)({}, {
222
+ contentType: 'application/json',
223
+ accessControlAllowOrigin: '*',
224
+ body: undefined,
225
+ }, options || {});
226
+ const xhr = new XMLHttpRequest();
227
+ xhr.open(method, tslib_1.__classPrivateFieldGet(this, _LeapAuthService_authHost, "f") + endpoint, true);
228
+ xhr.setRequestHeader('Content-type', options.contentType);
229
+ xhr.setRequestHeader('Access-Control-Allow-Origin', options.accessControlAllowOrigin);
230
+ if (accessToken)
231
+ xhr.setRequestHeader('Authorization', 'Bearer ' + accessToken);
232
+ xhr.onload = () => {
233
+ try {
234
+ let resp;
235
+ if (xhr.response)
236
+ resp = JSON.parse(xhr.response);
237
+ onload(resp, xhr.status);
238
+ }
239
+ catch (e) {
240
+ onload(xhr.response, xhr.status);
241
+ }
242
+ };
243
+ if (options.body)
244
+ options.body = JSON.stringify(options.body);
245
+ xhr.send(options.body);
246
+ });
247
+ _LeapAuthService_redirectUrl.set(this, (params) => {
248
+ const { requestUrl, newWindow, callback, noListener } = params;
249
+ const fullUrl = tslib_1.__classPrivateFieldGet(this, _LeapAuthService_authHost, "f") + requestUrl;
250
+ if (newWindow) {
251
+ const childWindow = window.open(fullUrl, '_blank');
252
+ const eventHandler = (event) => {
253
+ if (event && event.data === 'closeMe' && childWindow) {
254
+ childWindow.close();
255
+ if ((0, lodash_1.isFunction)(callback)) {
256
+ callback();
257
+ window.removeEventListener('message', eventHandler, false);
258
+ }
259
+ }
260
+ };
261
+ if (!noListener) {
262
+ window.addEventListener('message', eventHandler, false);
263
+ }
264
+ }
265
+ else {
266
+ window.location.href = fullUrl;
267
+ }
268
+ });
269
+ tslib_1.__classPrivateFieldSet(this, _LeapAuthService_authHost, authHost, "f");
270
+ tslib_1.__classPrivateFieldSet(this, _LeapAuthService_clientId, clientId, "f");
271
+ }
272
+ }
273
+ exports.LeapAuthService = LeapAuthService;
274
+ _LeapAuthService_authHost = new WeakMap(), _LeapAuthService_clientId = new WeakMap(), _LeapAuthService_xhr = new WeakMap(), _LeapAuthService_redirectUrl = new WeakMap();
275
+ //# sourceMappingURL=auth.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../../../../../packages/auth-agent/src/lib/auth.service.ts"],"names":[],"mappings":"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"}