@oneuptime/common 10.0.6 → 10.0.7
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/Server/Middleware/UserAuthorization.ts +36 -0
- package/Server/Services/UserNotificationRuleService.ts +83 -0
- package/Server/Utils/Browser.ts +3 -3
- package/Server/Utils/VM/VMRunner.ts +181 -29
- package/Server/Views/Partials/Head.ejs +3 -1
- package/Tests/Server/Middleware/UserAuthorization.test.ts +1 -0
- package/build/dist/Server/Middleware/UserAuthorization.js +30 -1
- package/build/dist/Server/Middleware/UserAuthorization.js.map +1 -1
- package/build/dist/Server/Services/UserNotificationRuleService.js +58 -5
- package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
- package/build/dist/Server/Utils/Browser.js +3 -3
- package/build/dist/Server/Utils/Browser.js.map +1 -1
- package/build/dist/Server/Utils/VM/VMRunner.js +163 -28
- package/build/dist/Server/Utils/VM/VMRunner.js.map +1 -1
- package/build/dist/Tests/Server/Middleware/UserAuthorization.test.js +1 -0
- package/build/dist/Tests/Server/Middleware/UserAuthorization.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -116,6 +116,42 @@ export default class UserMiddleware {
|
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
+
/*
|
|
120
|
+
* Also check x-sso-tokens header (mobile app flow).
|
|
121
|
+
* The header value is a JSON-encoded map of { projectId: ssoToken }.
|
|
122
|
+
*/
|
|
123
|
+
const ssoTokensHeader: string | undefined = req.headers["x-sso-tokens"] as
|
|
124
|
+
| string
|
|
125
|
+
| undefined;
|
|
126
|
+
|
|
127
|
+
if (ssoTokensHeader) {
|
|
128
|
+
try {
|
|
129
|
+
const headerTokens: Record<string, string> =
|
|
130
|
+
JSON.parse(ssoTokensHeader);
|
|
131
|
+
|
|
132
|
+
for (const projectId of Object.keys(headerTokens)) {
|
|
133
|
+
const token: string | undefined = headerTokens[projectId];
|
|
134
|
+
|
|
135
|
+
if (!token || typeof token !== "string") {
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
try {
|
|
140
|
+
const decoded: JSONWebTokenData = JSONWebToken.decode(token);
|
|
141
|
+
|
|
142
|
+
if (decoded.projectId?.toString() === projectId) {
|
|
143
|
+
ssoTokens[projectId] = token;
|
|
144
|
+
}
|
|
145
|
+
} catch (err) {
|
|
146
|
+
logger.error(err);
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
} catch (err) {
|
|
151
|
+
logger.error(err);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
119
155
|
return ssoTokens;
|
|
120
156
|
}
|
|
121
157
|
|
|
@@ -1110,6 +1110,9 @@ export class Service extends DatabaseService<Model> {
|
|
|
1110
1110
|
...(alert.alertNumber !== undefined && {
|
|
1111
1111
|
alertNumber: alert.alertNumber,
|
|
1112
1112
|
}),
|
|
1113
|
+
...(alert.alertNumberWithPrefix && {
|
|
1114
|
+
alertNumberWithPrefix: alert.alertNumberWithPrefix,
|
|
1115
|
+
}),
|
|
1113
1116
|
alertId: alert.id!.toString(),
|
|
1114
1117
|
projectId: alert.projectId!.toString(),
|
|
1115
1118
|
});
|
|
@@ -1187,6 +1190,9 @@ export class Service extends DatabaseService<Model> {
|
|
|
1187
1190
|
...(incident.incidentNumber !== undefined && {
|
|
1188
1191
|
incidentNumber: incident.incidentNumber,
|
|
1189
1192
|
}),
|
|
1193
|
+
...(incident.incidentNumberWithPrefix && {
|
|
1194
|
+
incidentNumberWithPrefix: incident.incidentNumberWithPrefix,
|
|
1195
|
+
}),
|
|
1190
1196
|
incidentId: incident.id!.toString(),
|
|
1191
1197
|
projectId: incident.projectId!.toString(),
|
|
1192
1198
|
});
|
|
@@ -1309,6 +1315,83 @@ export class Service extends DatabaseService<Model> {
|
|
|
1309
1315
|
});
|
|
1310
1316
|
});
|
|
1311
1317
|
}
|
|
1318
|
+
|
|
1319
|
+
// send push notification for incident episode
|
|
1320
|
+
if (
|
|
1321
|
+
options.userNotificationEventType ===
|
|
1322
|
+
UserNotificationEventType.IncidentEpisodeCreated &&
|
|
1323
|
+
incidentEpisode
|
|
1324
|
+
) {
|
|
1325
|
+
logTimelineItem.status = UserNotificationStatus.Sending;
|
|
1326
|
+
logTimelineItem.statusMessage = `Sending push notification to device.`;
|
|
1327
|
+
logTimelineItem.userPushId = notificationRuleItem.userPush.id!;
|
|
1328
|
+
|
|
1329
|
+
const updatedLog: UserOnCallLogTimeline =
|
|
1330
|
+
await UserOnCallLogTimelineService.create({
|
|
1331
|
+
data: logTimelineItem,
|
|
1332
|
+
props: {
|
|
1333
|
+
isRoot: true,
|
|
1334
|
+
},
|
|
1335
|
+
});
|
|
1336
|
+
|
|
1337
|
+
const pushMessage: PushNotificationMessage =
|
|
1338
|
+
PushNotificationUtil.createIncidentEpisodeCreatedNotification({
|
|
1339
|
+
incidentEpisodeTitle: incidentEpisode.title!,
|
|
1340
|
+
projectName: incidentEpisode.project?.name || "OneUptime",
|
|
1341
|
+
incidentEpisodeViewLink: (
|
|
1342
|
+
await IncidentEpisodeService.getEpisodeLinkInDashboard(
|
|
1343
|
+
incidentEpisode.projectId!,
|
|
1344
|
+
incidentEpisode.id!,
|
|
1345
|
+
)
|
|
1346
|
+
).toString(),
|
|
1347
|
+
...(incidentEpisode.episodeNumber !== undefined && {
|
|
1348
|
+
episodeNumber: incidentEpisode.episodeNumber,
|
|
1349
|
+
}),
|
|
1350
|
+
...(incidentEpisode.episodeNumberWithPrefix && {
|
|
1351
|
+
episodeNumberWithPrefix: incidentEpisode.episodeNumberWithPrefix,
|
|
1352
|
+
}),
|
|
1353
|
+
incidentEpisodeId: incidentEpisode.id!.toString(),
|
|
1354
|
+
projectId: incidentEpisode.projectId!.toString(),
|
|
1355
|
+
});
|
|
1356
|
+
|
|
1357
|
+
PushNotificationService.sendPushNotification(
|
|
1358
|
+
{
|
|
1359
|
+
devices: [
|
|
1360
|
+
{
|
|
1361
|
+
token: notificationRuleItem.userPush.deviceToken!,
|
|
1362
|
+
...(notificationRuleItem.userPush.deviceName && {
|
|
1363
|
+
name: notificationRuleItem.userPush.deviceName,
|
|
1364
|
+
}),
|
|
1365
|
+
},
|
|
1366
|
+
],
|
|
1367
|
+
message: pushMessage,
|
|
1368
|
+
deviceType: notificationRuleItem.userPush
|
|
1369
|
+
.deviceType! as PushDeviceType,
|
|
1370
|
+
},
|
|
1371
|
+
{
|
|
1372
|
+
projectId: options.projectId,
|
|
1373
|
+
userOnCallLogTimelineId: updatedLog.id!,
|
|
1374
|
+
userId: notificationRuleItem.userId!,
|
|
1375
|
+
onCallPolicyId: options.onCallPolicyId,
|
|
1376
|
+
onCallPolicyEscalationRuleId: options.onCallPolicyEscalationRuleId,
|
|
1377
|
+
teamId: options.userBelongsToTeamId,
|
|
1378
|
+
onCallDutyPolicyExecutionLogTimelineId:
|
|
1379
|
+
options.onCallDutyPolicyExecutionLogTimelineId,
|
|
1380
|
+
onCallScheduleId: options.onCallScheduleId,
|
|
1381
|
+
},
|
|
1382
|
+
).catch(async (err: Error) => {
|
|
1383
|
+
await UserOnCallLogTimelineService.updateOneById({
|
|
1384
|
+
id: updatedLog.id!,
|
|
1385
|
+
data: {
|
|
1386
|
+
status: UserNotificationStatus.Error,
|
|
1387
|
+
statusMessage: err.message || "Error sending push notification.",
|
|
1388
|
+
},
|
|
1389
|
+
props: {
|
|
1390
|
+
isRoot: true,
|
|
1391
|
+
},
|
|
1392
|
+
});
|
|
1393
|
+
});
|
|
1394
|
+
}
|
|
1312
1395
|
}
|
|
1313
1396
|
|
|
1314
1397
|
if (
|
package/Server/Utils/Browser.ts
CHANGED
|
@@ -23,7 +23,9 @@ export default class BrowserUtil {
|
|
|
23
23
|
"--disable-dev-shm-usage",
|
|
24
24
|
"--disable-gpu",
|
|
25
25
|
"--disable-software-rasterizer",
|
|
26
|
-
"--
|
|
26
|
+
"--disable-dbus", // no D-Bus daemon in containers
|
|
27
|
+
"--disable-features=dbus", // additional D-Bus feature gate
|
|
28
|
+
"--no-zygote", // skip zygote process that fails OOM score adjustments in containers
|
|
27
29
|
];
|
|
28
30
|
|
|
29
31
|
// Firefox preferences for stability in containerized environments
|
|
@@ -31,8 +33,6 @@ export default class BrowserUtil {
|
|
|
31
33
|
string,
|
|
32
34
|
string | number | boolean
|
|
33
35
|
> = {
|
|
34
|
-
"browser.tabs.remote.autostart": false, // disable multi-process (electrolysis)
|
|
35
|
-
"dom.ipc.processCount": 1, // single content process
|
|
36
36
|
"gfx.webrender.all": false, // disable GPU-based WebRender
|
|
37
37
|
"media.hardware-video-decoding.enabled": false, // disable hardware video decoding
|
|
38
38
|
"layers.acceleration.disabled": true, // disable GPU-accelerated layers
|
|
@@ -77,22 +77,46 @@ export default class VMRunner {
|
|
|
77
77
|
};
|
|
78
78
|
`);
|
|
79
79
|
|
|
80
|
-
|
|
80
|
+
/*
|
|
81
|
+
* axios (get, head, options, post, put, patch, delete, request)
|
|
82
|
+
* bridged via applySyncPromise.
|
|
83
|
+
*
|
|
84
|
+
* For GET/HEAD/OPTIONS/DELETE: args = [method, url, configJson?]
|
|
85
|
+
* For POST/PUT/PATCH: args = [method, url, bodyJson?, configJson?]
|
|
86
|
+
* For REQUEST: args = ['request', '', configJson]
|
|
87
|
+
*/
|
|
81
88
|
const axiosRef: ivm.Reference<
|
|
82
|
-
(
|
|
89
|
+
(
|
|
90
|
+
method: string,
|
|
91
|
+
url: string,
|
|
92
|
+
arg1?: string,
|
|
93
|
+
arg2?: string,
|
|
94
|
+
) => Promise<string>
|
|
83
95
|
> = new ivm.Reference(
|
|
84
96
|
async (
|
|
85
97
|
method: string,
|
|
86
98
|
url: string,
|
|
87
|
-
|
|
99
|
+
arg1?: string,
|
|
100
|
+
arg2?: string,
|
|
88
101
|
): Promise<string> => {
|
|
89
|
-
const
|
|
90
|
-
|
|
102
|
+
const methodsWithBody: string[] = ["post", "put", "patch"];
|
|
103
|
+
const hasBody: boolean = methodsWithBody.includes(method);
|
|
104
|
+
|
|
105
|
+
/*
|
|
106
|
+
* For POST/PUT/PATCH: arg1=body, arg2=config
|
|
107
|
+
* For GET/HEAD/OPTIONS/DELETE/REQUEST: arg1=config
|
|
108
|
+
*/
|
|
109
|
+
const body: JSONObject | undefined =
|
|
110
|
+
hasBody && arg1 ? (JSON.parse(arg1) as JSONObject) : undefined;
|
|
111
|
+
|
|
112
|
+
const configStr: string | undefined = hasBody ? arg2 : arg1;
|
|
113
|
+
const config: JSONObject | undefined = configStr
|
|
114
|
+
? (JSON.parse(configStr) as JSONObject)
|
|
91
115
|
: undefined;
|
|
92
116
|
|
|
93
117
|
// Reconstruct real http/https Agents from serialized markers
|
|
94
|
-
if (
|
|
95
|
-
const httpsAgentConfig: JSONObject | undefined =
|
|
118
|
+
if (config) {
|
|
119
|
+
const httpsAgentConfig: JSONObject | undefined = config[
|
|
96
120
|
"httpsAgent"
|
|
97
121
|
] as JSONObject | undefined;
|
|
98
122
|
|
|
@@ -100,12 +124,12 @@ export default class VMRunner {
|
|
|
100
124
|
httpsAgentConfig &&
|
|
101
125
|
httpsAgentConfig["__agentType"] === "__https_agent__"
|
|
102
126
|
) {
|
|
103
|
-
|
|
127
|
+
config["httpsAgent"] = new https.Agent(
|
|
104
128
|
httpsAgentConfig["options"] as https.AgentOptions,
|
|
105
129
|
) as unknown as JSONObject;
|
|
106
130
|
}
|
|
107
131
|
|
|
108
|
-
const httpAgentConfig: JSONObject | undefined =
|
|
132
|
+
const httpAgentConfig: JSONObject | undefined = config[
|
|
109
133
|
"httpAgent"
|
|
110
134
|
] as JSONObject | undefined;
|
|
111
135
|
|
|
@@ -113,7 +137,7 @@ export default class VMRunner {
|
|
|
113
137
|
httpAgentConfig &&
|
|
114
138
|
httpAgentConfig["__agentType"] === "__http_agent__"
|
|
115
139
|
) {
|
|
116
|
-
|
|
140
|
+
config["httpAgent"] = new http.Agent(
|
|
117
141
|
httpAgentConfig["options"] as http.AgentOptions,
|
|
118
142
|
) as unknown as JSONObject;
|
|
119
143
|
}
|
|
@@ -123,24 +147,56 @@ export default class VMRunner {
|
|
|
123
147
|
|
|
124
148
|
switch (method) {
|
|
125
149
|
case "get":
|
|
126
|
-
response = await axios.get(url,
|
|
150
|
+
response = await axios.get(url, config);
|
|
151
|
+
break;
|
|
152
|
+
case "head":
|
|
153
|
+
response = await axios.head(url, config);
|
|
154
|
+
break;
|
|
155
|
+
case "options":
|
|
156
|
+
response = await axios.options(url, config);
|
|
127
157
|
break;
|
|
128
158
|
case "post":
|
|
129
|
-
response = await axios.post(url,
|
|
159
|
+
response = await axios.post(url, body, config);
|
|
130
160
|
break;
|
|
131
161
|
case "put":
|
|
132
|
-
response = await axios.put(url,
|
|
162
|
+
response = await axios.put(url, body, config);
|
|
163
|
+
break;
|
|
164
|
+
case "patch":
|
|
165
|
+
response = await axios.patch(url, body, config);
|
|
133
166
|
break;
|
|
134
167
|
case "delete":
|
|
135
|
-
response = await axios.delete(url,
|
|
168
|
+
response = await axios.delete(url, config);
|
|
169
|
+
break;
|
|
170
|
+
case "request":
|
|
171
|
+
response = await axios.request(
|
|
172
|
+
config as Parameters<typeof axios.request>[0],
|
|
173
|
+
);
|
|
136
174
|
break;
|
|
137
175
|
default:
|
|
138
176
|
throw new Error(`Unsupported HTTP method: ${method}`);
|
|
139
177
|
}
|
|
140
178
|
|
|
179
|
+
/*
|
|
180
|
+
* Convert AxiosHeaders to a plain object before serializing.
|
|
181
|
+
* JSON.stringify calls AxiosHeaders.toJSON(key) with a truthy key,
|
|
182
|
+
* which makes it join array headers (like set-cookie) with commas.
|
|
183
|
+
* This produces invalid Cookie headers when user code forwards them.
|
|
184
|
+
*/
|
|
185
|
+
const plainHeaders: Record<string, unknown> = {};
|
|
186
|
+
|
|
187
|
+
if (response.headers) {
|
|
188
|
+
for (const key of Object.keys(
|
|
189
|
+
response.headers as Record<string, unknown>,
|
|
190
|
+
)) {
|
|
191
|
+
plainHeaders[key] = (response.headers as Record<string, unknown>)[
|
|
192
|
+
key
|
|
193
|
+
];
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
141
197
|
return JSON.stringify({
|
|
142
198
|
status: response.status,
|
|
143
|
-
headers:
|
|
199
|
+
headers: plainHeaders,
|
|
144
200
|
data: response.data,
|
|
145
201
|
});
|
|
146
202
|
},
|
|
@@ -149,24 +205,120 @@ export default class VMRunner {
|
|
|
149
205
|
await jail.set("_axiosRef", axiosRef);
|
|
150
206
|
|
|
151
207
|
await context.eval(`
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
208
|
+
function _assertNoFunctions(obj, path) {
|
|
209
|
+
if (!obj || typeof obj !== 'object') return;
|
|
210
|
+
if (Array.isArray(obj)) {
|
|
211
|
+
for (let i = 0; i < obj.length; i++) {
|
|
212
|
+
const fullPath = path + '[' + i + ']';
|
|
213
|
+
if (typeof obj[i] === 'function') {
|
|
214
|
+
throw new Error(
|
|
215
|
+
'Functions are not supported in axios config because of security. ' +
|
|
216
|
+
'Found a function at "' + fullPath + '". Please remove it or replace it with a plain value.'
|
|
217
|
+
);
|
|
218
|
+
}
|
|
219
|
+
if (obj[i] && typeof obj[i] === 'object') {
|
|
220
|
+
_assertNoFunctions(obj[i], fullPath);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
for (const key of Object.keys(obj)) {
|
|
226
|
+
const fullPath = path ? path + '.' + key : key;
|
|
227
|
+
if (typeof obj[key] === 'function') {
|
|
228
|
+
throw new Error(
|
|
229
|
+
'Functions are not supported in axios config because of security. ' +
|
|
230
|
+
'Found a function at "' + fullPath + '". Please remove it or replace it with a plain value.'
|
|
231
|
+
);
|
|
232
|
+
}
|
|
233
|
+
if (obj[key] && typeof obj[key] === 'object') {
|
|
234
|
+
_assertNoFunctions(obj[key], fullPath);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
function _makeAxiosInstance(defaults) {
|
|
240
|
+
function mergeConfig(overrides) {
|
|
241
|
+
if (!defaults && !overrides) return undefined;
|
|
242
|
+
if (!defaults) return overrides;
|
|
243
|
+
if (!overrides) return Object.assign({}, defaults);
|
|
244
|
+
const merged = Object.assign({}, defaults, overrides);
|
|
245
|
+
if (defaults.headers && overrides.headers) {
|
|
246
|
+
merged.headers = Object.assign({}, defaults.headers, overrides.headers);
|
|
247
|
+
}
|
|
248
|
+
return merged;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
async function _request(config) {
|
|
252
|
+
const merged = mergeConfig(config);
|
|
253
|
+
if (merged) _assertNoFunctions(merged, 'config');
|
|
254
|
+
const r = await _axiosRef.applySyncPromise(undefined, ['request', '', merged ? JSON.stringify(merged) : undefined]);
|
|
155
255
|
return JSON.parse(r);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
// Make instance callable: axios(config) or axios(url, config)
|
|
259
|
+
const instance = async function(urlOrConfig, config) {
|
|
260
|
+
if (typeof urlOrConfig === 'object') {
|
|
261
|
+
return _request(urlOrConfig);
|
|
262
|
+
}
|
|
263
|
+
return _request(Object.assign({}, config || {}, { url: urlOrConfig }));
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
instance.request = _request;
|
|
267
|
+
instance.get = async (url, config) => {
|
|
268
|
+
const merged = mergeConfig(config);
|
|
269
|
+
if (merged) _assertNoFunctions(merged, 'config');
|
|
270
|
+
const r = await _axiosRef.applySyncPromise(undefined, ['get', url, merged ? JSON.stringify(merged) : undefined]);
|
|
159
271
|
return JSON.parse(r);
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
const
|
|
272
|
+
};
|
|
273
|
+
instance.head = async (url, config) => {
|
|
274
|
+
const merged = mergeConfig(config);
|
|
275
|
+
if (merged) _assertNoFunctions(merged, 'config');
|
|
276
|
+
const r = await _axiosRef.applySyncPromise(undefined, ['head', url, merged ? JSON.stringify(merged) : undefined]);
|
|
163
277
|
return JSON.parse(r);
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
const
|
|
278
|
+
};
|
|
279
|
+
instance.options = async (url, config) => {
|
|
280
|
+
const merged = mergeConfig(config);
|
|
281
|
+
if (merged) _assertNoFunctions(merged, 'config');
|
|
282
|
+
const r = await _axiosRef.applySyncPromise(undefined, ['options', url, merged ? JSON.stringify(merged) : undefined]);
|
|
167
283
|
return JSON.parse(r);
|
|
168
|
-
}
|
|
169
|
-
|
|
284
|
+
};
|
|
285
|
+
instance.post = async (url, data, config) => {
|
|
286
|
+
const merged = mergeConfig(config);
|
|
287
|
+
if (data) _assertNoFunctions(data, 'data');
|
|
288
|
+
if (merged) _assertNoFunctions(merged, 'config');
|
|
289
|
+
const r = await _axiosRef.applySyncPromise(undefined, ['post', url, data ? JSON.stringify(data) : undefined, merged ? JSON.stringify(merged) : undefined]);
|
|
290
|
+
return JSON.parse(r);
|
|
291
|
+
};
|
|
292
|
+
instance.put = async (url, data, config) => {
|
|
293
|
+
const merged = mergeConfig(config);
|
|
294
|
+
if (data) _assertNoFunctions(data, 'data');
|
|
295
|
+
if (merged) _assertNoFunctions(merged, 'config');
|
|
296
|
+
const r = await _axiosRef.applySyncPromise(undefined, ['put', url, data ? JSON.stringify(data) : undefined, merged ? JSON.stringify(merged) : undefined]);
|
|
297
|
+
return JSON.parse(r);
|
|
298
|
+
};
|
|
299
|
+
instance.patch = async (url, data, config) => {
|
|
300
|
+
const merged = mergeConfig(config);
|
|
301
|
+
if (data) _assertNoFunctions(data, 'data');
|
|
302
|
+
if (merged) _assertNoFunctions(merged, 'config');
|
|
303
|
+
const r = await _axiosRef.applySyncPromise(undefined, ['patch', url, data ? JSON.stringify(data) : undefined, merged ? JSON.stringify(merged) : undefined]);
|
|
304
|
+
return JSON.parse(r);
|
|
305
|
+
};
|
|
306
|
+
instance.delete = async (url, config) => {
|
|
307
|
+
const merged = mergeConfig(config);
|
|
308
|
+
if (merged) _assertNoFunctions(merged, 'config');
|
|
309
|
+
const r = await _axiosRef.applySyncPromise(undefined, ['delete', url, merged ? JSON.stringify(merged) : undefined]);
|
|
310
|
+
return JSON.parse(r);
|
|
311
|
+
};
|
|
312
|
+
instance.create = (instanceDefaults) => {
|
|
313
|
+
if (instanceDefaults) _assertNoFunctions(instanceDefaults, 'defaults');
|
|
314
|
+
const combinedDefaults = mergeConfig(instanceDefaults);
|
|
315
|
+
return _makeAxiosInstance(combinedDefaults);
|
|
316
|
+
};
|
|
317
|
+
|
|
318
|
+
return instance;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
const axios = _makeAxiosInstance(null);
|
|
170
322
|
`);
|
|
171
323
|
|
|
172
324
|
// crypto (createHash, createHmac, randomBytes) - bridged via applySync
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
2
2
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
3
|
+
<link rel="preload" href="https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap" as="style">
|
|
3
4
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap"
|
|
4
5
|
rel="stylesheet">
|
|
5
6
|
<style>
|
|
6
7
|
* {
|
|
7
|
-
font-family: Inter;
|
|
8
|
+
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
8
9
|
}
|
|
9
10
|
|
|
10
11
|
|
|
@@ -34,6 +35,7 @@
|
|
|
34
35
|
width: auto;
|
|
35
36
|
}
|
|
36
37
|
</style>
|
|
38
|
+
<link rel="preload" href="https://cdn.tailwindcss.com" as="script">
|
|
37
39
|
<script src="https://cdn.tailwindcss.com"></script>
|
|
38
40
|
|
|
39
41
|
<!-- Google Tag Manager -->
|
|
@@ -55,7 +55,7 @@ export default class UserMiddleware {
|
|
|
55
55
|
return undefined;
|
|
56
56
|
}
|
|
57
57
|
static getSsoTokens(req) {
|
|
58
|
-
var _a;
|
|
58
|
+
var _a, _b;
|
|
59
59
|
const ssoTokens = {};
|
|
60
60
|
// get sso tokens from cookies.
|
|
61
61
|
const cookies = CookieUtil.getAllCookies(req);
|
|
@@ -78,6 +78,35 @@ export default class UserMiddleware {
|
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
|
+
/*
|
|
82
|
+
* Also check x-sso-tokens header (mobile app flow).
|
|
83
|
+
* The header value is a JSON-encoded map of { projectId: ssoToken }.
|
|
84
|
+
*/
|
|
85
|
+
const ssoTokensHeader = req.headers["x-sso-tokens"];
|
|
86
|
+
if (ssoTokensHeader) {
|
|
87
|
+
try {
|
|
88
|
+
const headerTokens = JSON.parse(ssoTokensHeader);
|
|
89
|
+
for (const projectId of Object.keys(headerTokens)) {
|
|
90
|
+
const token = headerTokens[projectId];
|
|
91
|
+
if (!token || typeof token !== "string") {
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
try {
|
|
95
|
+
const decoded = JSONWebToken.decode(token);
|
|
96
|
+
if (((_b = decoded.projectId) === null || _b === void 0 ? void 0 : _b.toString()) === projectId) {
|
|
97
|
+
ssoTokens[projectId] = token;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
logger.error(err);
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
catch (err) {
|
|
107
|
+
logger.error(err);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
81
110
|
return ssoTokens;
|
|
82
111
|
}
|
|
83
112
|
static doesSsoTokenForProjectExist(req, projectId, userId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserAuthorization.js","sourceRoot":"","sources":["../../../../Server/Middleware/UserAuthorization.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"UserAuthorization.js","sourceRoot":"","sources":["../../../../Server/Middleware/UserAuthorization.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,kBAAkB,MAAM,gCAAgC,CAAC;AAChE,OAAO,cAAc,MAAM,4BAA4B,CAAC;AACxD,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAClD,OAAO,WAAW,MAAM,+BAA+B,CAAC;AACxD,OAAO,UAAU,MAAM,iBAAiB,CAAC;AAOzC,OAAO,WAAW,MAAM,gCAAgC,CAAC;AACzD,OAAO,YAAY,MAAM,uBAAuB,CAAC;AACjD,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,QAAQ,MAAM,mBAAmB,CAAC;AACzC,OAAO,iBAAiB,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAG7C,OAAO,yBAAyB,MAAM,iDAAiD,CAAC;AACxF,OAAO,yBAAyB,MAAM,iDAAiD,CAAC;AACxF,OAAO,uBAAuB,MAAM,+CAA+C,CAAC;AACpF,OAAO,YAAY,MAAM,0BAA0B,CAAC;AAEpD,OAAO,aAAa,MAAM,2BAA2B,CAAC;AAEtD,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAK5C,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAE5C,OAAO,kBAAkB,MAAM,wCAAwC,CAAC;AAExE,MAAM,CAAC,OAAO,OAAO,cAAc;IACjC;;;;;OAKG;IAGW,AAAP,MAAM,CAAC,wBAAwB,CACpC,GAAmB;QAEnB,IAAI,WAAW,GAAuB,SAAS,CAAC;QAEhD,IACE,UAAU,CAAC,2BAA2B,CAAC,GAAG,EAAE,UAAU,CAAC,eAAe,EAAE,CAAC,EACzE,CAAC;YACD,WAAW,GAAG,UAAU,CAAC,2BAA2B,CAClD,GAAG,EACH,UAAU,CAAC,eAAe,EAAE,CAC7B,CAAC;QACJ,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAGa,AAAP,MAAM,CAAC,gCAAgC,CAC5C,GAAmB;QAEnB,8CAA8C;QAC9C,MAAM,WAAW,GACf,UAAU,CAAC,2BAA2B,CAAC,GAAG,EAAE,UAAU,CAAC,eAAe,EAAE,CAAC,CAAC;QAE5E,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,4EAA4E;QAC5E,MAAM,UAAU,GAAuB,GAAG,CAAC,OAAO,CAAC,eAAe,CAErD,CAAC;QACd,IAAI,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YACnD,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAGa,AAAP,MAAM,CAAC,YAAY,CAAC,GAAmB;;QAC5C,MAAM,SAAS,GAAuB,EAAE,CAAC;QAEzC,+BAA+B;QAE/B,MAAM,OAAO,GAAuB,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QAElE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACvC,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC;gBAC3C,MAAM,KAAK,GAAuC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC/D,IAAI,SAAS,GAAuB,SAAS,CAAC;gBAE9C,IAAI,CAAC;oBACH,SAAS,GAAG,MAAA,YAAY,CAAC,MAAM,CAC7B,KAAe,CAChB,CAAC,SAAS,0CAAE,QAAQ,EAAE,CAAC;gBAC1B,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAClB,SAAS;gBACX,CAAC;gBAED,IACE,SAAS;oBACT,KAAK;oBACL,OAAO,KAAK,KAAK,QAAQ;oBACzB,OAAO,SAAS,KAAK,QAAQ,EAC7B,CAAC;oBACD,SAAS,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,GAAG,CAAW,CAAC;gBAChD,CAAC;YACH,CAAC;QACH,CAAC;QAED;;;WAGG;QACH,MAAM,eAAe,GAAuB,GAAG,CAAC,OAAO,CAAC,cAAc,CAEzD,CAAC;QAEd,IAAI,eAAe,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,YAAY,GAChB,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;gBAE9B,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;oBAClD,MAAM,KAAK,GAAuB,YAAY,CAAC,SAAS,CAAC,CAAC;oBAE1D,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;wBACxC,SAAS;oBACX,CAAC;oBAED,IAAI,CAAC;wBACH,MAAM,OAAO,GAAqB,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;wBAE7D,IAAI,CAAA,MAAA,OAAO,CAAC,SAAS,0CAAE,QAAQ,EAAE,MAAK,SAAS,EAAE,CAAC;4BAChD,SAAS,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;wBAC/B,CAAC;oBACH,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBAClB,SAAS;oBACX,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAGa,AAAP,MAAM,CAAC,2BAA2B,CACvC,GAAmB,EACnB,SAAmB,EACnB,MAAgB;;QAEhB,MAAM,SAAS,GAAuB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAE7D,IAAI,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;YACjD,MAAM,WAAW,GAAqB,YAAY,CAAC,MAAM,CACvD,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAW,CAC1C,CAAC;YACF,IACE,CAAA,MAAA,WAAW,CAAC,SAAS,0CAAE,QAAQ,EAAE,MAAK,SAAS,CAAC,QAAQ,EAAE;gBAC1D,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,MAAM,CAAC,QAAQ,EAAE,EACnD,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAGmB,AAAb,MAAM,CAAC,KAAK,CAAC,iBAAiB,CACnC,GAAmB,EACnB,GAAoB,EACpB,IAAkB;QAElB,MAAM,QAAQ,GAAoB,iBAAiB,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACtE,MAAM,gBAAgB,GAAqB,GAAuB,CAAC;QAEnE,IAAI,QAAQ,EAAE,CAAC;YACb,gBAAgB,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAErC,gCAAgC;YAChC,MAAM,cAAc,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,OAAO,MAAM,iBAAiB,CAAC,mCAAmC,CAChE,GAAG,EACH,GAAG,EACH,IAAI,CACL,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GACf,cAAc,CAAC,gCAAgC,CAAC,GAAG,CAAC,CAAC;QAEvD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,gBAAgB,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;YAC5C,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QAED,IAAI,CAAC;YACH,gBAAgB,CAAC,iBAAiB,GAAG,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACxE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,mFAAmF;YACnF,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClB,OAAO,QAAQ,CAAC,iBAAiB,CAC/B,GAAG,EACH,GAAG,EACH,IAAI,yBAAyB,CAC3B,+DAA+D,CAChE,CACF,CAAC;QACJ,CAAC;QAED,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;YACrD,gBAAgB,CAAC,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,gBAAgB,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC5C,CAAC;QAED,MAAM,MAAM,GAAW,gBAAgB,CAAC,iBAAiB,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAE5E,MAAM,WAAW,CAAC,WAAW,CAAC;YAC5B,KAAK,EAAE;gBACL,GAAG,EAAE,MAAM;aACZ;YACD,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;YACvB,IAAI,EAAE,EAAE,UAAU,EAAE,aAAa,CAAC,cAAc,EAAE,EAAE;SACrD,CAAC,CAAC;QAEH,MAAM,0BAA0B,GAC9B,MAAM,kBAAkB,CAAC,6BAA6B,CACpD,gBAAgB,CAAC,iBAAiB,CAAC,MAAM,CAC1C,CAAC;QAEJ,IAAI,0BAA0B,EAAE,CAAC;YAC/B,gBAAgB,CAAC,0BAA0B,GAAG,0BAA0B,CAAC;QAC3E,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,MAAM,0BAA0B,GAC9B,MAAM,cAAc,CAAC,yCAAyC,CAAC;oBAC7D,GAAG;oBACH,QAAQ;oBACR,MAAM,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC;oBAC5B,aAAa,EAAE,gBAAgB,CAAC,iBAAiB,CAAC,aAAa;iBAChE,CAAC,CAAC;gBAEL,IAAI,0BAA0B,EAAE,CAAC;oBAC/B,gBAAgB,CAAC,0BAA0B,GAAG,EAAE,CAAC;oBACjD,gBAAgB,CAAC,0BAA0B,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;wBAC9D,0BAA0B,CAAC;gBAC/B,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,QAAQ,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAkB,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;QAED,IAAI,GAAG,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,CAAC;YACzC,IACE,0BAA0B;gBAC1B,0BAA0B,CAAC,UAAU;gBACrC,0BAA0B,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAChD,CAAC;gBACD,MAAM,0BAA0B,GAC9B,MAAM,cAAc,CAAC,2CAA2C,CAC9D,GAAG,EACH,IAAI,QAAQ,CAAC,MAAM,CAAC,EACpB,0BAA0B,CAAC,UAAU,CACtC,CAAC;gBAEJ,IAAI,0BAA0B,EAAE,CAAC;oBAC/B,gBAAgB,CAAC,0BAA0B;wBACzC,0BAA0B,CAAC;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC;QAED,uBAAuB;QAEvB,IAAI,gBAAgB,CAAC,0BAA0B,EAAE,CAAC;YAChD,MAAM,eAAe,GAAe,aAAa,CAAC,SAAS,CACzD,gBAAgB,CAAC,0BAA0B,CAC5C,CAAC;YACF,MAAM,WAAW,GAAW,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YAC5D,MAAM,qBAAqB,GAAW,MAAM,YAAY,CAAC,SAAS,CAChE,WAAW,EACX,IAAI,CACL,CAAC;YACF,GAAG,CAAC,GAAG,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAC;YAC3C,GAAG,CAAC,GAAG,CAAC,yBAAyB,EAAE,qBAAqB,CAAC,CAAC;QAC5D,CAAC;QAED,gCAAgC;QAChC,IACE,gBAAgB,CAAC,0BAA0B;YAC3C,QAAQ;YACR,gBAAgB,CAAC,0BAA0B,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAChE,CAAC;YACD,MAAM,YAAY,GAAW,IAAI,CAAC,SAAS,CACzC,aAAa,CAAC,SAAS,CACrB,gBAAgB,CAAC,0BAA0B,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAE,CAClE,CACF,CAAC;YAEF,MAAM,sBAAsB,GAAW,MAAM,YAAY,CAAC,SAAS,CACjE,YAAY,EACZ,IAAI,CACL,CAAC;YAEF,IACE,CAAC,CACC,GAAG,CAAC,OAAO;gBACX,GAAG,CAAC,OAAO,CAAC,0BAA0B,CAAC;gBACvC,GAAG,CAAC,OAAO,CAAC,0BAA0B,CAAC,KAAK,sBAAsB,CACnE,EACD,CAAC;gBACD,GAAG,CAAC,GAAG,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAC;gBAC7C,GAAG,CAAC,GAAG,CAAC,0BAA0B,EAAE,sBAAsB,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QAED,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC;IAGmB,AAAb,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,IAK7D;QACC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;QAEtD,MAAM,OAAO,GAAmB,MAAM,cAAc,CAAC,WAAW,CAAC;YAC/D,EAAE,EAAE,QAAQ;YACZ,MAAM,EAAE;gBACN,kBAAkB,EAAE,IAAI;aACzB;YACD,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;aACb;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;QACxD,CAAC;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,IAAI,CAAC,cAAc,CAAC,2BAA2B,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;gBACvE,MAAM,IAAI,yBAAyB,CACjC,sFAAsF,CACvF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IACE,OAAO,CAAC,kBAAkB;YAC1B,CAAC,cAAc,CAAC,2BAA2B,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,EAClE,CAAC;YACD,MAAM,IAAI,yBAAyB,EAAE,CAAC;QACxC,CAAC;QAED,gEAAgE;QAChE,OAAO,MAAM,kBAAkB,CAAC,6BAA6B,CAC3D,MAAM,EACN,QAAQ,CACT,CAAC;IACJ,CAAC;IAGmB,AAAb,MAAM,CAAC,KAAK,CAAC,2CAA2C,CAC7D,GAAmB,EACnB,MAAgB,EAChB,UAAsB;QAEtB,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,QAAQ,GAAmB,MAAM,cAAc,CAAC,MAAM,CAAC;YAC3D,KAAK,EAAE;gBACL,GAAG,EAAE,WAAW,CAAC,GAAG,CAClB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAW,EAAE,EAAE;oBAC7B,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACtB,CAAC,CAAC,IAAI,EAAE,CACT;aACF;YACD,MAAM,EAAE;gBACN,kBAAkB,EAAE,IAAI;aACzB;YACD,KAAK,EAAE,iBAAiB;YACxB,IAAI,EAAE,CAAC;YACP,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;aACb;SACF,CAAC,CAAC;QAEH,IAAI,MAAM,GAAkD,IAAI,CAAC;QACjE,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,iFAAiF;YAEjF,IAAI,0BAA6D,CAAC;YAClE,IACE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAU,EAAE,EAAE;gBAC3B,OAAO,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,kBAAkB,CAAC;YAChE,CAAC,CAAC;gBACF,CAAC,cAAc,CAAC,2BAA2B,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,EACnE,CAAC;gBACD,2BAA2B;gBAC3B,0BAA0B;oBACxB,kBAAkB,CAAC,oCAAoC,CAAC,SAAS,CAAC,CAAC;YACvE,CAAC;iBAAM,CAAC;gBACN,gEAAgE;gBAChE,0BAA0B;oBACxB,MAAM,kBAAkB,CAAC,6BAA6B,CACpD,MAAM,EACN,SAAS,CACV,CAAC;YACN,CAAC;YAED,IAAI,0BAA0B,EAAE,CAAC;gBAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,GAAG,EAAE,CAAC;gBACd,CAAC;gBACD,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,0BAA0B,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AA/Ye;IADb,WAAW,EAAE;;;;oDAgBb;AAGa;IADb,WAAW,EAAE;;;;4DAqBb;AAGa;IADb,WAAW,EAAE;;;;wCAsEb;AAGa;IADb,WAAW,EAAE;;6CAGD,QAAQ;QACX,QAAQ;;uDAiBjB;AAGmB;IADnB,WAAW,EAAE;;;;6CA4Jb;AAGmB;IADnB,WAAW,EAAE;;;;qEA2Cb;AAGmB;IADnB,WAAW,EAAE;;6CAGJ,QAAQ;;uEAyDjB"}
|
|
@@ -60,7 +60,7 @@ export class Service extends DatabaseService {
|
|
|
60
60
|
}
|
|
61
61
|
async executeNotificationRuleItem(userNotificationRuleId, options) {
|
|
62
62
|
// get user notification log and see if this rule has already been executed. If so then skip.
|
|
63
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20;
|
|
63
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21;
|
|
64
64
|
const userOnCallLog = await UserOnCallLogService.findOneById({
|
|
65
65
|
id: options.userNotificationLogId,
|
|
66
66
|
props: {
|
|
@@ -819,8 +819,10 @@ export class Service extends DatabaseService {
|
|
|
819
819
|
isRoot: true,
|
|
820
820
|
},
|
|
821
821
|
});
|
|
822
|
-
const pushMessage = PushNotificationUtil.createAlertCreatedNotification(Object.assign(Object.assign({ alertTitle: alert.title, projectName: ((_16 = alert.project) === null || _16 === void 0 ? void 0 : _16.name) || "OneUptime", alertViewLink: (await AlertService.getAlertLinkInDashboard(alert.projectId, alert.id)).toString() }, (alert.alertNumber !== undefined && {
|
|
822
|
+
const pushMessage = PushNotificationUtil.createAlertCreatedNotification(Object.assign(Object.assign(Object.assign({ alertTitle: alert.title, projectName: ((_16 = alert.project) === null || _16 === void 0 ? void 0 : _16.name) || "OneUptime", alertViewLink: (await AlertService.getAlertLinkInDashboard(alert.projectId, alert.id)).toString() }, (alert.alertNumber !== undefined && {
|
|
823
823
|
alertNumber: alert.alertNumber,
|
|
824
|
+
})), (alert.alertNumberWithPrefix && {
|
|
825
|
+
alertNumberWithPrefix: alert.alertNumberWithPrefix,
|
|
824
826
|
})), { alertId: alert.id.toString(), projectId: alert.projectId.toString() }));
|
|
825
827
|
// send push notification.
|
|
826
828
|
PushNotificationService.sendPushNotification({
|
|
@@ -869,8 +871,10 @@ export class Service extends DatabaseService {
|
|
|
869
871
|
isRoot: true,
|
|
870
872
|
},
|
|
871
873
|
});
|
|
872
|
-
const pushMessage = PushNotificationUtil.createIncidentCreatedNotification(Object.assign(Object.assign({ incidentTitle: incident.title, projectName: ((_17 = incident.project) === null || _17 === void 0 ? void 0 : _17.name) || "OneUptime", incidentViewLink: (await IncidentService.getIncidentLinkInDashboard(incident.projectId, incident.id)).toString() }, (incident.incidentNumber !== undefined && {
|
|
874
|
+
const pushMessage = PushNotificationUtil.createIncidentCreatedNotification(Object.assign(Object.assign(Object.assign({ incidentTitle: incident.title, projectName: ((_17 = incident.project) === null || _17 === void 0 ? void 0 : _17.name) || "OneUptime", incidentViewLink: (await IncidentService.getIncidentLinkInDashboard(incident.projectId, incident.id)).toString() }, (incident.incidentNumber !== undefined && {
|
|
873
875
|
incidentNumber: incident.incidentNumber,
|
|
876
|
+
})), (incident.incidentNumberWithPrefix && {
|
|
877
|
+
incidentNumberWithPrefix: incident.incidentNumberWithPrefix,
|
|
874
878
|
})), { incidentId: incident.id.toString(), projectId: incident.projectId.toString() }));
|
|
875
879
|
// send push notification.
|
|
876
880
|
PushNotificationService.sendPushNotification({
|
|
@@ -955,9 +959,58 @@ export class Service extends DatabaseService {
|
|
|
955
959
|
});
|
|
956
960
|
});
|
|
957
961
|
}
|
|
962
|
+
// send push notification for incident episode
|
|
963
|
+
if (options.userNotificationEventType ===
|
|
964
|
+
UserNotificationEventType.IncidentEpisodeCreated &&
|
|
965
|
+
incidentEpisode) {
|
|
966
|
+
logTimelineItem.status = UserNotificationStatus.Sending;
|
|
967
|
+
logTimelineItem.statusMessage = `Sending push notification to device.`;
|
|
968
|
+
logTimelineItem.userPushId = notificationRuleItem.userPush.id;
|
|
969
|
+
const updatedLog = await UserOnCallLogTimelineService.create({
|
|
970
|
+
data: logTimelineItem,
|
|
971
|
+
props: {
|
|
972
|
+
isRoot: true,
|
|
973
|
+
},
|
|
974
|
+
});
|
|
975
|
+
const pushMessage = PushNotificationUtil.createIncidentEpisodeCreatedNotification(Object.assign(Object.assign(Object.assign({ incidentEpisodeTitle: incidentEpisode.title, projectName: ((_19 = incidentEpisode.project) === null || _19 === void 0 ? void 0 : _19.name) || "OneUptime", incidentEpisodeViewLink: (await IncidentEpisodeService.getEpisodeLinkInDashboard(incidentEpisode.projectId, incidentEpisode.id)).toString() }, (incidentEpisode.episodeNumber !== undefined && {
|
|
976
|
+
episodeNumber: incidentEpisode.episodeNumber,
|
|
977
|
+
})), (incidentEpisode.episodeNumberWithPrefix && {
|
|
978
|
+
episodeNumberWithPrefix: incidentEpisode.episodeNumberWithPrefix,
|
|
979
|
+
})), { incidentEpisodeId: incidentEpisode.id.toString(), projectId: incidentEpisode.projectId.toString() }));
|
|
980
|
+
PushNotificationService.sendPushNotification({
|
|
981
|
+
devices: [
|
|
982
|
+
Object.assign({ token: notificationRuleItem.userPush.deviceToken }, (notificationRuleItem.userPush.deviceName && {
|
|
983
|
+
name: notificationRuleItem.userPush.deviceName,
|
|
984
|
+
})),
|
|
985
|
+
],
|
|
986
|
+
message: pushMessage,
|
|
987
|
+
deviceType: notificationRuleItem.userPush
|
|
988
|
+
.deviceType,
|
|
989
|
+
}, {
|
|
990
|
+
projectId: options.projectId,
|
|
991
|
+
userOnCallLogTimelineId: updatedLog.id,
|
|
992
|
+
userId: notificationRuleItem.userId,
|
|
993
|
+
onCallPolicyId: options.onCallPolicyId,
|
|
994
|
+
onCallPolicyEscalationRuleId: options.onCallPolicyEscalationRuleId,
|
|
995
|
+
teamId: options.userBelongsToTeamId,
|
|
996
|
+
onCallDutyPolicyExecutionLogTimelineId: options.onCallDutyPolicyExecutionLogTimelineId,
|
|
997
|
+
onCallScheduleId: options.onCallScheduleId,
|
|
998
|
+
}).catch(async (err) => {
|
|
999
|
+
await UserOnCallLogTimelineService.updateOneById({
|
|
1000
|
+
id: updatedLog.id,
|
|
1001
|
+
data: {
|
|
1002
|
+
status: UserNotificationStatus.Error,
|
|
1003
|
+
statusMessage: err.message || "Error sending push notification.",
|
|
1004
|
+
},
|
|
1005
|
+
props: {
|
|
1006
|
+
isRoot: true,
|
|
1007
|
+
},
|
|
1008
|
+
});
|
|
1009
|
+
});
|
|
1010
|
+
}
|
|
958
1011
|
}
|
|
959
|
-
if (((
|
|
960
|
-
!((
|
|
1012
|
+
if (((_20 = notificationRuleItem.userPush) === null || _20 === void 0 ? void 0 : _20.deviceToken) &&
|
|
1013
|
+
!((_21 = notificationRuleItem.userPush) === null || _21 === void 0 ? void 0 : _21.isVerified)) {
|
|
961
1014
|
// create a log.
|
|
962
1015
|
logTimelineItem.status = UserNotificationStatus.Error;
|
|
963
1016
|
logTimelineItem.statusMessage = `Push notification not sent because device is not verified.`;
|