@oneuptime/common 8.0.5574 → 8.0.5576
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/Models/DatabaseModels/Index.ts +4 -0
- package/Models/DatabaseModels/StatusPagePrivateUserSession.ts +413 -0
- package/Models/DatabaseModels/UserSession.ts +318 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1762890441920-MigrationName.ts +91 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +2 -0
- package/Server/Services/Index.ts +4 -0
- package/Server/Services/StatusPagePrivateUserSessionService.ts +368 -0
- package/Server/Services/UserSessionService.ts +350 -0
- package/Server/Utils/Cookie.ts +122 -5
- package/Server/Utils/Express.ts +100 -0
- package/Server/Utils/JsonWebToken.ts +8 -1
- package/Types/CookieName.ts +1 -0
- package/Types/JsonWebTokenData.ts +1 -0
- package/Types/Text.ts +15 -0
- package/UI/Utils/API/API.ts +39 -1
- package/Utils/API.ts +74 -5
- package/build/dist/Models/DatabaseModels/Index.js +4 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPagePrivateUserSession.js +456 -0
- package/build/dist/Models/DatabaseModels/StatusPagePrivateUserSession.js.map +1 -0
- package/build/dist/Models/DatabaseModels/UserSession.js +356 -0
- package/build/dist/Models/DatabaseModels/UserSession.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1762890441920-MigrationName.js +38 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1762890441920-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +2 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Services/Index.js +4 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/StatusPagePrivateUserSessionService.js +214 -0
- package/build/dist/Server/Services/StatusPagePrivateUserSessionService.js.map +1 -0
- package/build/dist/Server/Services/UserSessionService.js +202 -0
- package/build/dist/Server/Services/UserSessionService.js.map +1 -0
- package/build/dist/Server/Utils/Cookie.js +74 -7
- package/build/dist/Server/Utils/Cookie.js.map +1 -1
- package/build/dist/Server/Utils/Express.js +62 -0
- package/build/dist/Server/Utils/Express.js.map +1 -1
- package/build/dist/Server/Utils/JsonWebToken.js +8 -2
- package/build/dist/Server/Utils/JsonWebToken.js.map +1 -1
- package/build/dist/Types/CookieName.js +1 -0
- package/build/dist/Types/CookieName.js.map +1 -1
- package/build/dist/Types/Text.js +9 -0
- package/build/dist/Types/Text.js.map +1 -1
- package/build/dist/UI/Utils/API/API.js +27 -0
- package/build/dist/UI/Utils/API/API.js.map +1 -1
- package/build/dist/Utils/API.js +36 -6
- package/build/dist/Utils/API.js.map +1 -1
- package/package.json +146 -146
package/Server/Utils/Cookie.ts
CHANGED
|
@@ -4,6 +4,7 @@ import ObjectID from "../../Types/ObjectID";
|
|
|
4
4
|
import { CookieOptions } from "express";
|
|
5
5
|
import JSONWebToken from "./JsonWebToken";
|
|
6
6
|
import User from "../../Models/DatabaseModels/User";
|
|
7
|
+
import StatusPagePrivateUser from "../../Models/DatabaseModels/StatusPagePrivateUser";
|
|
7
8
|
import OneUptimeDate from "../../Types/Date";
|
|
8
9
|
import PositiveNumber from "../../Types/PositiveNumber";
|
|
9
10
|
import CookieName from "../../Types/CookieName";
|
|
@@ -12,6 +13,8 @@ import CaptureSpan from "./Telemetry/CaptureSpan";
|
|
|
12
13
|
export default class CookieUtil {
|
|
13
14
|
// set cookie with express response
|
|
14
15
|
|
|
16
|
+
private static readonly DEFAULT_ACCESS_TOKEN_EXPIRY_SECONDS: number = 15 * 60;
|
|
17
|
+
|
|
15
18
|
@CaptureSpan()
|
|
16
19
|
public static getCookiesFromCookieString(
|
|
17
20
|
cookieString: string,
|
|
@@ -58,8 +61,23 @@ export default class CookieUtil {
|
|
|
58
61
|
expressResponse: ExpressResponse;
|
|
59
62
|
user: User;
|
|
60
63
|
isGlobalLogin: boolean;
|
|
64
|
+
sessionId: ObjectID;
|
|
65
|
+
refreshToken: string;
|
|
66
|
+
refreshTokenExpiresAt: Date;
|
|
67
|
+
accessTokenExpiresInSeconds?: number;
|
|
61
68
|
}): void {
|
|
62
|
-
const {
|
|
69
|
+
const {
|
|
70
|
+
expressResponse: res,
|
|
71
|
+
user,
|
|
72
|
+
isGlobalLogin,
|
|
73
|
+
sessionId,
|
|
74
|
+
refreshToken,
|
|
75
|
+
refreshTokenExpiresAt,
|
|
76
|
+
} = data;
|
|
77
|
+
|
|
78
|
+
const accessTokenExpiresInSeconds: number =
|
|
79
|
+
data.accessTokenExpiresInSeconds ||
|
|
80
|
+
CookieUtil.DEFAULT_ACCESS_TOKEN_EXPIRY_SECONDS;
|
|
63
81
|
|
|
64
82
|
const token: string = JSONWebToken.signUserLoginToken({
|
|
65
83
|
tokenData: {
|
|
@@ -69,13 +87,24 @@ export default class CookieUtil {
|
|
|
69
87
|
timezone: user.timezone || null,
|
|
70
88
|
isMasterAdmin: user.isMasterAdmin!,
|
|
71
89
|
isGlobalLogin: isGlobalLogin, // This is a general login without SSO. So, we will set this to true. This will give access to all the projects that dont require SSO.
|
|
90
|
+
sessionId: sessionId,
|
|
72
91
|
},
|
|
73
|
-
expiresInSeconds:
|
|
92
|
+
expiresInSeconds: accessTokenExpiresInSeconds,
|
|
74
93
|
});
|
|
75
94
|
|
|
76
95
|
// Set a cookie with token.
|
|
77
96
|
CookieUtil.setCookie(res, CookieUtil.getUserTokenKey(), token, {
|
|
78
|
-
maxAge:
|
|
97
|
+
maxAge: accessTokenExpiresInSeconds * 1000,
|
|
98
|
+
httpOnly: true,
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
const refreshTokenTtl: number = Math.max(
|
|
102
|
+
refreshTokenExpiresAt.getTime() - Date.now(),
|
|
103
|
+
0,
|
|
104
|
+
);
|
|
105
|
+
|
|
106
|
+
CookieUtil.setCookie(res, CookieUtil.getRefreshTokenKey(), refreshToken, {
|
|
107
|
+
maxAge: refreshTokenTtl,
|
|
79
108
|
httpOnly: true,
|
|
80
109
|
});
|
|
81
110
|
|
|
@@ -148,6 +177,62 @@ export default class CookieUtil {
|
|
|
148
177
|
}
|
|
149
178
|
}
|
|
150
179
|
|
|
180
|
+
@CaptureSpan()
|
|
181
|
+
public static setStatusPagePrivateUserCookie(data: {
|
|
182
|
+
expressResponse: ExpressResponse;
|
|
183
|
+
user: StatusPagePrivateUser;
|
|
184
|
+
statusPageId: ObjectID;
|
|
185
|
+
sessionId: ObjectID;
|
|
186
|
+
refreshToken: string;
|
|
187
|
+
refreshTokenExpiresAt: Date;
|
|
188
|
+
accessTokenExpiresInSeconds?: number;
|
|
189
|
+
}): string {
|
|
190
|
+
const {
|
|
191
|
+
expressResponse: res,
|
|
192
|
+
user,
|
|
193
|
+
statusPageId,
|
|
194
|
+
sessionId,
|
|
195
|
+
refreshToken,
|
|
196
|
+
refreshTokenExpiresAt,
|
|
197
|
+
} = data;
|
|
198
|
+
|
|
199
|
+
const accessTokenExpiresInSeconds: number =
|
|
200
|
+
data.accessTokenExpiresInSeconds ||
|
|
201
|
+
CookieUtil.DEFAULT_ACCESS_TOKEN_EXPIRY_SECONDS;
|
|
202
|
+
|
|
203
|
+
const token: string = JSONWebToken.sign({
|
|
204
|
+
data: {
|
|
205
|
+
userId: user.id!,
|
|
206
|
+
email: user.email!,
|
|
207
|
+
statusPageId: statusPageId,
|
|
208
|
+
sessionId: sessionId,
|
|
209
|
+
},
|
|
210
|
+
expiresInSeconds: accessTokenExpiresInSeconds,
|
|
211
|
+
});
|
|
212
|
+
|
|
213
|
+
CookieUtil.setCookie(res, CookieUtil.getUserTokenKey(statusPageId), token, {
|
|
214
|
+
maxAge: accessTokenExpiresInSeconds * 1000,
|
|
215
|
+
httpOnly: true,
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
const refreshTokenTtl: number = Math.max(
|
|
219
|
+
refreshTokenExpiresAt.getTime() - Date.now(),
|
|
220
|
+
0,
|
|
221
|
+
);
|
|
222
|
+
|
|
223
|
+
CookieUtil.setCookie(
|
|
224
|
+
res,
|
|
225
|
+
CookieUtil.getRefreshTokenKey(statusPageId),
|
|
226
|
+
refreshToken,
|
|
227
|
+
{
|
|
228
|
+
maxAge: refreshTokenTtl,
|
|
229
|
+
httpOnly: true,
|
|
230
|
+
},
|
|
231
|
+
);
|
|
232
|
+
|
|
233
|
+
return token;
|
|
234
|
+
}
|
|
235
|
+
|
|
151
236
|
@CaptureSpan()
|
|
152
237
|
public static setCookie(
|
|
153
238
|
res: ExpressResponse,
|
|
@@ -155,7 +240,13 @@ export default class CookieUtil {
|
|
|
155
240
|
value: string,
|
|
156
241
|
options: CookieOptions,
|
|
157
242
|
): void {
|
|
158
|
-
|
|
243
|
+
const cookieOptions: CookieOptions = {
|
|
244
|
+
path: "/",
|
|
245
|
+
sameSite: "lax",
|
|
246
|
+
...options,
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
res.cookie(name, value, cookieOptions);
|
|
159
250
|
}
|
|
160
251
|
|
|
161
252
|
// get cookie with express request
|
|
@@ -168,11 +259,25 @@ export default class CookieUtil {
|
|
|
168
259
|
return req.cookies[name];
|
|
169
260
|
}
|
|
170
261
|
|
|
262
|
+
@CaptureSpan()
|
|
263
|
+
public static getRefreshTokenFromExpressRequest(
|
|
264
|
+
req: ExpressRequest,
|
|
265
|
+
id?: ObjectID,
|
|
266
|
+
): string | undefined {
|
|
267
|
+
return CookieUtil.getCookieFromExpressRequest(
|
|
268
|
+
req,
|
|
269
|
+
CookieUtil.getRefreshTokenKey(id),
|
|
270
|
+
);
|
|
271
|
+
}
|
|
272
|
+
|
|
171
273
|
// delete cookie with express response
|
|
172
274
|
|
|
173
275
|
@CaptureSpan()
|
|
174
276
|
public static removeCookie(res: ExpressResponse, name: string): void {
|
|
175
|
-
res.clearCookie(name
|
|
277
|
+
res.clearCookie(name, {
|
|
278
|
+
path: "/",
|
|
279
|
+
sameSite: "lax",
|
|
280
|
+
});
|
|
176
281
|
}
|
|
177
282
|
|
|
178
283
|
// get all cookies with express request
|
|
@@ -190,6 +295,15 @@ export default class CookieUtil {
|
|
|
190
295
|
return `${CookieName.Token}-${id.toString()}`;
|
|
191
296
|
}
|
|
192
297
|
|
|
298
|
+
@CaptureSpan()
|
|
299
|
+
public static getRefreshTokenKey(id?: ObjectID): string {
|
|
300
|
+
if (!id) {
|
|
301
|
+
return CookieName.RefreshToken;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
return `${CookieName.RefreshToken}-${id.toString()}`;
|
|
305
|
+
}
|
|
306
|
+
|
|
193
307
|
@CaptureSpan()
|
|
194
308
|
public static getUserSSOKey(id: ObjectID): string {
|
|
195
309
|
return `${this.getSSOKey()}${id.toString()}`;
|
|
@@ -210,5 +324,8 @@ export default class CookieUtil {
|
|
|
210
324
|
for (const key in cookies) {
|
|
211
325
|
this.removeCookie(res, key);
|
|
212
326
|
}
|
|
327
|
+
|
|
328
|
+
// Always attempt to remove refresh token cookie even if not parsed.
|
|
329
|
+
this.removeCookie(res, this.getRefreshTokenKey());
|
|
213
330
|
}
|
|
214
331
|
}
|
package/Server/Utils/Express.ts
CHANGED
|
@@ -46,6 +46,15 @@ export interface OneUptimeResponse extends express.Response {
|
|
|
46
46
|
logBody: JSONObjectOrArray;
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
+
export type RequestDeviceInfo = {
|
|
50
|
+
deviceName?: string;
|
|
51
|
+
deviceType?: string;
|
|
52
|
+
deviceOS?: string;
|
|
53
|
+
deviceBrowser?: string;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
type HeaderValue = string | Array<string> | null | undefined;
|
|
57
|
+
|
|
49
58
|
class Express {
|
|
50
59
|
private static app: express.Application;
|
|
51
60
|
private static httpServer: Server;
|
|
@@ -101,3 +110,94 @@ class Express {
|
|
|
101
110
|
}
|
|
102
111
|
|
|
103
112
|
export default Express;
|
|
113
|
+
|
|
114
|
+
export const headerValueToString: (value: HeaderValue) => string | undefined = (
|
|
115
|
+
value: HeaderValue,
|
|
116
|
+
): string | undefined => {
|
|
117
|
+
if (Array.isArray(value)) {
|
|
118
|
+
return value.length > 0 ? value[0] : undefined;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if (typeof value === "string" && value.trim().length > 0) {
|
|
122
|
+
return value.trim();
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
return undefined;
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
export const extractDeviceInfo: (req: ExpressRequest) => RequestDeviceInfo = (
|
|
129
|
+
req: ExpressRequest,
|
|
130
|
+
): RequestDeviceInfo => {
|
|
131
|
+
const body: JSONObject = (req.body || {}) as JSONObject;
|
|
132
|
+
const data: JSONObject = (body["data"] as JSONObject) || {};
|
|
133
|
+
|
|
134
|
+
const getValue: (key: string) => string | undefined = (
|
|
135
|
+
key: string,
|
|
136
|
+
): string | undefined => {
|
|
137
|
+
const headerKey: string = key.toLowerCase();
|
|
138
|
+
const camelKey: string = headerKey
|
|
139
|
+
.split("-")
|
|
140
|
+
.map((part: string, index: number) => {
|
|
141
|
+
if (index === 0) {
|
|
142
|
+
return part;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
return part.charAt(0).toUpperCase() + part.slice(1);
|
|
146
|
+
})
|
|
147
|
+
.join("");
|
|
148
|
+
|
|
149
|
+
return (
|
|
150
|
+
headerValueToString(req.headers[`x-${headerKey}`]) ||
|
|
151
|
+
headerValueToString(body[camelKey] as HeaderValue) ||
|
|
152
|
+
headerValueToString(data[camelKey] as HeaderValue) ||
|
|
153
|
+
headerValueToString(body[key] as HeaderValue) ||
|
|
154
|
+
headerValueToString(data[key] as HeaderValue)
|
|
155
|
+
);
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
const result: RequestDeviceInfo = {};
|
|
159
|
+
|
|
160
|
+
const deviceName: string | undefined = getValue("device-name");
|
|
161
|
+
if (deviceName) {
|
|
162
|
+
result.deviceName = deviceName;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
const deviceType: string | undefined = getValue("device-type");
|
|
166
|
+
if (deviceType) {
|
|
167
|
+
result.deviceType = deviceType;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
const deviceOS: string | undefined = getValue("device-os");
|
|
171
|
+
if (deviceOS) {
|
|
172
|
+
result.deviceOS = deviceOS;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
const deviceBrowser: string | undefined = getValue("device-browser");
|
|
176
|
+
if (deviceBrowser) {
|
|
177
|
+
result.deviceBrowser = deviceBrowser;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
return result;
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
export const getClientIp: (req: ExpressRequest) => string | undefined = (
|
|
184
|
+
req: ExpressRequest,
|
|
185
|
+
): string | undefined => {
|
|
186
|
+
const forwarded: string | Array<string> | undefined = req.headers[
|
|
187
|
+
"x-forwarded-for"
|
|
188
|
+
] as string | Array<string> | undefined;
|
|
189
|
+
|
|
190
|
+
if (Array.isArray(forwarded) && forwarded.length > 0) {
|
|
191
|
+
return forwarded[0]?.split(",")[0]?.trim();
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
if (typeof forwarded === "string" && forwarded.trim().length > 0) {
|
|
195
|
+
return forwarded.split(",")[0]?.trim();
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
if (req.socket?.remoteAddress) {
|
|
199
|
+
return req.socket.remoteAddress;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
return req.ip;
|
|
203
|
+
};
|
|
@@ -24,6 +24,7 @@ class JSONWebToken {
|
|
|
24
24
|
isMasterAdmin: boolean;
|
|
25
25
|
// If this is OneUptime username and password login. This is true, if this is SSO login. Then, this is false.
|
|
26
26
|
isGlobalLogin: boolean;
|
|
27
|
+
sessionId: ObjectID;
|
|
27
28
|
};
|
|
28
29
|
expiresInSeconds: number;
|
|
29
30
|
}): string {
|
|
@@ -67,9 +68,9 @@ class JSONWebToken {
|
|
|
67
68
|
name: data.name?.toString() || "",
|
|
68
69
|
projectId: data.projectId?.toString() || "",
|
|
69
70
|
isMasterAdmin: data.isMasterAdmin,
|
|
71
|
+
sessionId: data.sessionId?.toString() || undefined,
|
|
70
72
|
};
|
|
71
73
|
}
|
|
72
|
-
|
|
73
74
|
return JSONWebToken.signJsonPayload(jsonObj, expiresInSeconds);
|
|
74
75
|
}
|
|
75
76
|
|
|
@@ -106,6 +107,9 @@ class JSONWebToken {
|
|
|
106
107
|
isMasterAdmin: false,
|
|
107
108
|
name: new Name("User"),
|
|
108
109
|
isGlobalLogin: Boolean(decoded["isGlobalLogin"]),
|
|
110
|
+
sessionId: decoded["sessionId"]
|
|
111
|
+
? new ObjectID(decoded["sessionId"] as string)
|
|
112
|
+
: undefined,
|
|
109
113
|
};
|
|
110
114
|
}
|
|
111
115
|
|
|
@@ -118,6 +122,9 @@ class JSONWebToken {
|
|
|
118
122
|
: undefined,
|
|
119
123
|
isMasterAdmin: Boolean(decoded["isMasterAdmin"]),
|
|
120
124
|
isGlobalLogin: Boolean(decoded["isGlobalLogin"]),
|
|
125
|
+
sessionId: decoded["sessionId"]
|
|
126
|
+
? new ObjectID(decoded["sessionId"] as string)
|
|
127
|
+
: undefined,
|
|
121
128
|
};
|
|
122
129
|
} catch (e) {
|
|
123
130
|
logger.error(e);
|
package/Types/CookieName.ts
CHANGED
|
@@ -11,4 +11,5 @@ export default interface JSONWebTokenData extends JSONObject {
|
|
|
11
11
|
statusPageId?: ObjectID | undefined; // for status page logins.
|
|
12
12
|
projectId?: ObjectID | undefined; // for SSO logins.
|
|
13
13
|
isGlobalLogin: boolean; // If this is OneUptime username and password login. This is true, if this is SSO login. Then, this is false.
|
|
14
|
+
sessionId?: ObjectID | undefined;
|
|
14
15
|
}
|
package/Types/Text.ts
CHANGED
|
@@ -297,4 +297,19 @@ export default class Text {
|
|
|
297
297
|
): string {
|
|
298
298
|
return sentence.split(search).join(replaceBy);
|
|
299
299
|
}
|
|
300
|
+
|
|
301
|
+
public static truncate(
|
|
302
|
+
value: string | null | undefined,
|
|
303
|
+
maxLength: number,
|
|
304
|
+
): string | undefined {
|
|
305
|
+
if (value === null || value === undefined) {
|
|
306
|
+
return undefined;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
if (maxLength <= 0) {
|
|
310
|
+
return "";
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
return value.length > maxLength ? value.slice(0, maxLength) : value;
|
|
314
|
+
}
|
|
300
315
|
}
|
package/UI/Utils/API/API.ts
CHANGED
|
@@ -3,6 +3,8 @@ import Navigation from "../Navigation";
|
|
|
3
3
|
import PermissionUtil from "../Permission";
|
|
4
4
|
import User from "../User";
|
|
5
5
|
import HTTPErrorResponse from "../../../Types/API/HTTPErrorResponse";
|
|
6
|
+
import HTTPMethod from "../../../Types/API/HTTPMethod";
|
|
7
|
+
import HTTPResponse from "../../../Types/API/HTTPResponse";
|
|
6
8
|
import Headers from "../../../Types/API/Headers";
|
|
7
9
|
import Hostname from "../../../Types/API/Hostname";
|
|
8
10
|
import Protocol from "../../../Types/API/Protocol";
|
|
@@ -11,14 +13,18 @@ import URL from "../../../Types/API/URL";
|
|
|
11
13
|
import Dictionary from "../../../Types/Dictionary";
|
|
12
14
|
import APIException from "../../../Types/Exception/ApiException";
|
|
13
15
|
import Exception from "../../../Types/Exception/Exception";
|
|
16
|
+
import { JSONObject } from "../../../Types/JSON";
|
|
14
17
|
import JSONFunctions from "../../../Types/JSONFunctions";
|
|
15
18
|
import {
|
|
16
19
|
UserGlobalAccessPermission,
|
|
17
20
|
UserTenantAccessPermission,
|
|
18
21
|
} from "../../../Types/Permission";
|
|
19
|
-
import API from "../../../Utils/API";
|
|
22
|
+
import API, { AuthRetryContext } from "../../../Utils/API";
|
|
23
|
+
import { IDENTITY_URL } from "../../Config";
|
|
20
24
|
|
|
21
25
|
class BaseAPI extends API {
|
|
26
|
+
private static refreshPromise: Promise<boolean> | null = null;
|
|
27
|
+
|
|
22
28
|
public constructor(protocol: Protocol, hostname: Hostname, route?: Route) {
|
|
23
29
|
super(protocol, hostname, route);
|
|
24
30
|
}
|
|
@@ -134,6 +140,38 @@ class BaseAPI extends API {
|
|
|
134
140
|
return error;
|
|
135
141
|
}
|
|
136
142
|
|
|
143
|
+
protected static override async tryRefreshAuth(
|
|
144
|
+
_context: AuthRetryContext,
|
|
145
|
+
): Promise<boolean> {
|
|
146
|
+
if (!this.refreshPromise) {
|
|
147
|
+
this.refreshPromise = (async () => {
|
|
148
|
+
const refreshUrl: URL = URL.fromString(
|
|
149
|
+
IDENTITY_URL.toString(),
|
|
150
|
+
).addRoute("/refresh-token");
|
|
151
|
+
|
|
152
|
+
const result: HTTPResponse<JSONObject> | HTTPErrorResponse =
|
|
153
|
+
await super.fetch<JSONObject>({
|
|
154
|
+
method: HTTPMethod.POST,
|
|
155
|
+
url: refreshUrl,
|
|
156
|
+
options: {
|
|
157
|
+
skipAuthRefresh: true,
|
|
158
|
+
hasAttemptedAuthRefresh: true,
|
|
159
|
+
},
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
if (result instanceof HTTPResponse && result.isSuccess()) {
|
|
163
|
+
return true;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
return false;
|
|
167
|
+
})().finally(() => {
|
|
168
|
+
this.refreshPromise = null;
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
return await this.refreshPromise;
|
|
173
|
+
}
|
|
174
|
+
|
|
137
175
|
protected static getLoginRoute(): Route {
|
|
138
176
|
return new Route("/accounts/login");
|
|
139
177
|
}
|
package/Utils/API.ts
CHANGED
|
@@ -24,6 +24,8 @@ export interface RequestOptions {
|
|
|
24
24
|
// Per-request proxy agent support (Probe supplies these instead of mutating global axios defaults)
|
|
25
25
|
httpAgent?: HttpAgent | undefined;
|
|
26
26
|
httpsAgent?: HttpsAgent | undefined;
|
|
27
|
+
skipAuthRefresh?: boolean | undefined;
|
|
28
|
+
hasAttemptedAuthRefresh?: boolean | undefined;
|
|
27
29
|
}
|
|
28
30
|
|
|
29
31
|
export interface APIRequestOptions {
|
|
@@ -43,6 +45,18 @@ export interface APIFetchOptions {
|
|
|
43
45
|
options?: RequestOptions;
|
|
44
46
|
}
|
|
45
47
|
|
|
48
|
+
export interface AuthRetryContext {
|
|
49
|
+
error: HTTPErrorResponse;
|
|
50
|
+
request: {
|
|
51
|
+
method: HTTPMethod;
|
|
52
|
+
url: URL;
|
|
53
|
+
data?: JSONObject | JSONArray;
|
|
54
|
+
headers?: Headers;
|
|
55
|
+
params?: Dictionary<string>;
|
|
56
|
+
options?: RequestOptions;
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
46
60
|
export default class API {
|
|
47
61
|
private _protocol: Protocol = Protocol.HTTPS;
|
|
48
62
|
public get protocol(): Protocol {
|
|
@@ -83,6 +97,12 @@ export default class API {
|
|
|
83
97
|
}
|
|
84
98
|
}
|
|
85
99
|
|
|
100
|
+
protected static async tryRefreshAuth(
|
|
101
|
+
_context: AuthRetryContext,
|
|
102
|
+
): Promise<boolean> {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
|
|
86
106
|
public async get<
|
|
87
107
|
T extends JSONObject | JSONArray | BaseModel | Array<BaseModel>,
|
|
88
108
|
>(options: APIRequestOptions): Promise<HTTPResponse<T> | HTTPErrorResponse> {
|
|
@@ -421,14 +441,63 @@ export default class API {
|
|
|
421
441
|
return response;
|
|
422
442
|
} catch (e) {
|
|
423
443
|
const error: Error | AxiosError = e as Error | AxiosError;
|
|
424
|
-
|
|
425
|
-
if (axios.isAxiosError(error)) {
|
|
426
|
-
// Do whatever you want with native error
|
|
427
|
-
errorResponse = this.getErrorResponse(error);
|
|
428
|
-
} else {
|
|
444
|
+
|
|
445
|
+
if (!axios.isAxiosError(error)) {
|
|
429
446
|
throw new APIException(error.message);
|
|
430
447
|
}
|
|
431
448
|
|
|
449
|
+
const errorResponse: HTTPErrorResponse = this.getErrorResponse(error);
|
|
450
|
+
|
|
451
|
+
if (
|
|
452
|
+
error.response?.status === 401 &&
|
|
453
|
+
!options?.skipAuthRefresh &&
|
|
454
|
+
!options?.hasAttemptedAuthRefresh
|
|
455
|
+
) {
|
|
456
|
+
const retryUrl: URL = URL.fromString(url.toString());
|
|
457
|
+
|
|
458
|
+
const requestContext: AuthRetryContext["request"] = {
|
|
459
|
+
method,
|
|
460
|
+
url: retryUrl,
|
|
461
|
+
};
|
|
462
|
+
|
|
463
|
+
if (data) {
|
|
464
|
+
requestContext.data = data;
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
if (headers) {
|
|
468
|
+
requestContext.headers = headers;
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
if (params) {
|
|
472
|
+
requestContext.params = params;
|
|
473
|
+
}
|
|
474
|
+
|
|
475
|
+
if (options) {
|
|
476
|
+
requestContext.options = options;
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
const refreshed: boolean = await this.tryRefreshAuth({
|
|
480
|
+
error: errorResponse,
|
|
481
|
+
request: requestContext,
|
|
482
|
+
});
|
|
483
|
+
|
|
484
|
+
if (refreshed) {
|
|
485
|
+
const nextOptions: RequestOptions = {
|
|
486
|
+
...(options || {}),
|
|
487
|
+
hasAttemptedAuthRefresh: true,
|
|
488
|
+
};
|
|
489
|
+
|
|
490
|
+
return await this.fetchInternal(
|
|
491
|
+
method,
|
|
492
|
+
retryUrl,
|
|
493
|
+
data,
|
|
494
|
+
headers,
|
|
495
|
+
params,
|
|
496
|
+
nextOptions,
|
|
497
|
+
);
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
|
|
432
501
|
this.handleError(errorResponse);
|
|
433
502
|
return errorResponse;
|
|
434
503
|
}
|
|
@@ -116,6 +116,7 @@ import StatusPageHistoryChartBarColorRule from "./StatusPageHistoryChartBarColor
|
|
|
116
116
|
import StatusPageOwnerTeam from "./StatusPageOwnerTeam";
|
|
117
117
|
import StatusPageOwnerUser from "./StatusPageOwnerUser";
|
|
118
118
|
import StatusPagePrivateUser from "./StatusPagePrivateUser";
|
|
119
|
+
import StatusPagePrivateUserSession from "./StatusPagePrivateUserSession";
|
|
119
120
|
import StatusPageResource from "./StatusPageResource";
|
|
120
121
|
import StatusPageSCIM from "./StatusPageSCIM";
|
|
121
122
|
import StatusPageSSO from "./StatusPageSso";
|
|
@@ -128,6 +129,7 @@ import TeamComplianceSetting from "./TeamComplianceSetting";
|
|
|
128
129
|
import TelemetryService from "./TelemetryService";
|
|
129
130
|
import UsageBilling from "./TelemetryUsageBilling";
|
|
130
131
|
import User from "./User";
|
|
132
|
+
import UserSession from "./UserSession";
|
|
131
133
|
import UserCall from "./UserCall";
|
|
132
134
|
// Notification Methods
|
|
133
135
|
import UserEmail from "./UserEmail";
|
|
@@ -243,6 +245,7 @@ const AllModelTypes = [
|
|
|
243
245
|
StatusPageFooterLink,
|
|
244
246
|
StatusPageHeaderLink,
|
|
245
247
|
StatusPagePrivateUser,
|
|
248
|
+
StatusPagePrivateUserSession,
|
|
246
249
|
StatusPageHistoryChartBarColorRule,
|
|
247
250
|
ScheduledMaintenanceState,
|
|
248
251
|
ScheduledMaintenance,
|
|
@@ -323,6 +326,7 @@ const AllModelTypes = [
|
|
|
323
326
|
CopilotActionTypePriority,
|
|
324
327
|
ProbeOwnerTeam,
|
|
325
328
|
ProbeOwnerUser,
|
|
329
|
+
UserSession,
|
|
326
330
|
UserTotpAuth,
|
|
327
331
|
UserWebAuthn,
|
|
328
332
|
TelemetryIngestionKey,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Index.js","sourceRoot":"","sources":["../../../../Models/DatabaseModels/Index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Index.js","sourceRoot":"","sources":["../../../../Models/DatabaseModels/Index.ts"],"names":[],"mappings":"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"}
|