@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 +11 -0
- package/package.json +18 -0
- package/src/index.d.ts +1 -0
- package/src/index.js +5 -0
- package/src/index.js.map +1 -0
- package/src/lib/auth-agent.d.ts +22 -0
- package/src/lib/auth-agent.js +188 -0
- package/src/lib/auth-agent.js.map +1 -0
- package/src/lib/auth.service.d.ts +46 -0
- package/src/lib/auth.service.js +275 -0
- package/src/lib/auth.service.js.map +1 -0
- package/src/lib/authentication.d.ts +68 -0
- package/src/lib/authentication.js +289 -0
- package/src/lib/authentication.js.map +1 -0
- package/src/lib/config.d.ts +3 -0
- package/src/lib/config.js +26 -0
- package/src/lib/config.js.map +1 -0
- package/src/lib/idle-timer.d.ts +8 -0
- package/src/lib/idle-timer.js +45 -0
- package/src/lib/idle-timer.js.map +1 -0
- package/src/lib/notification.d.ts +17 -0
- package/src/lib/notification.js +158 -0
- package/src/lib/notification.js.map +1 -0
- package/src/lib/types.d.ts +55 -0
- package/src/lib/types.js +3 -0
- package/src/lib/types.js.map +1 -0
package/README.md
ADDED
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
package/src/index.js.map
ADDED
|
@@ -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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"}
|