Skip to content

Commit 07ef758

Browse files
committed
fix(ADAPT): webhook signing
1 parent 51eaf90 commit 07ef758

File tree

1 file changed

+35
-10
lines changed

1 file changed

+35
-10
lines changed

server/controllers/AuthController.ts

Lines changed: 35 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1163,9 +1163,11 @@ export class AuthController {
11631163
}
11641164
}
11651165

1166-
private async _getADAPTWebhookHeaders() {
1166+
private async _getADAPTWebhookHeaders(data?: Record<string, string>) {
11671167
const encoded = new TextEncoder().encode(process.env.ADAPT_API_KEY ?? 'unknown');
1168-
const jwtToSend = await new SignJWT({}).setProtectedHeader({ alg: 'HS256', typ: 'JWT' }).setIssuedAt().setExpirationTime('1h').sign(encoded);
1168+
const jwtToSend = await new SignJWT({
1169+
...(data ?? {}),
1170+
}).setProtectedHeader({ alg: 'HS256', typ: 'JWT' }).setIssuedAt().setExpirationTime('1h').sign(encoded);
11691171

11701172
return {
11711173
'Content-Type': 'application/json',
@@ -1176,7 +1178,14 @@ export class AuthController {
11761178
}
11771179

11781180
private _getADAPTWebhookBase() {
1179-
return process.env.NODE_ENV === 'production' ? 'https://adapt.libretexts.org' : `https://${process.env.ADAPT_WEBHOOK_ENV}.adapt.libretexts.org`;
1181+
switch (process.env.ADAPT_WEBHOOK_ENV) {
1182+
case 'dev':
1183+
return 'https://dev.adapt.libretexts.org';
1184+
case 'staging':
1185+
return 'https://staging-adapt.libretexts.org';
1186+
default:
1187+
return 'https://adapt.libretexts.org';
1188+
}
11801189
}
11811190

11821191
private async _notifyADAPTOfNewUser(user: User) {
@@ -1190,19 +1199,30 @@ export class AuthController {
11901199
last_name: user.last_name,
11911200
email: user.email,
11921201
time_zone: user.time_zone,
1193-
user_type: user.user_type,
1202+
role: user.user_type,
11941203
verify_status: user.verify_status,
11951204
...(user.avatar && { avatar: user.avatar }),
11961205
};
11971206

11981207
const res = await axios.post(adaptWebhookURL, payload, {
1199-
headers: await this._getADAPTWebhookHeaders(),
1208+
headers: await this._getADAPTWebhookHeaders({
1209+
central_identity_id: user.uuid,
1210+
first_name: user.first_name,
1211+
last_name: user.last_name,
1212+
email: user.email,
1213+
time_zone: user.time_zone,
1214+
role: user.user_type ?? 'student',
1215+
verify_status: user.verify_status,
1216+
...(user.avatar && { avatar: user.avatar }),
1217+
}),
12001218
});
12011219

1202-
if (res.data.err) {
1203-
throw new Error(res.data.data.errMsg ?? 'Unknown error');
1220+
if (!res.data || res.data.type === 'error') {
1221+
throw new Error(res.data.message ?? 'Unknown error');
12041222
}
12051223

1224+
console.log(res.data)
1225+
12061226
return true;
12071227
} catch (err) {
12081228
console.error({
@@ -1225,13 +1245,18 @@ export class AuthController {
12251245
};
12261246

12271247
const res = await axios.post(adaptWebhookURL, payload, {
1228-
headers: await this._getADAPTWebhookHeaders(),
1248+
headers: await this._getADAPTWebhookHeaders({
1249+
central_identity_id: user.uuid,
1250+
verify_status: user.verify_status,
1251+
}),
12291252
});
12301253

1231-
if (res.data.err) {
1232-
throw new Error(res.data.errMsg ?? 'Unknown error');
1254+
if (!res.data || res.data.type === 'error') {
1255+
throw new Error(res.data.message ?? 'Unknown error');
12331256
}
12341257

1258+
console.log(res.data)
1259+
12351260
return true;
12361261
} catch (err) {
12371262
console.error({

0 commit comments

Comments
 (0)