fix: use private helcimApiToken for all server-side Helcim API calls
This commit is contained in:
parent
ccd1d0783a
commit
d31b5b4dac
53 changed files with 1755 additions and 572 deletions
|
|
@ -1,120 +1,89 @@
|
|||
import jwt from "jsonwebtoken";
|
||||
import Member from "../../../models/member.js";
|
||||
import { connectDB } from "../../../utils/mongoose.js";
|
||||
import Member from '../../../models/member.js'
|
||||
import { connectDB } from '../../../utils/mongoose.js'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
await connectDB();
|
||||
await connectDB()
|
||||
const member = await requireAuth(event)
|
||||
|
||||
const token = getCookie(event, "auth-token");
|
||||
|
||||
if (!token) {
|
||||
throw createError({
|
||||
statusCode: 401,
|
||||
statusMessage: "Not authenticated",
|
||||
});
|
||||
}
|
||||
|
||||
let memberId;
|
||||
try {
|
||||
const decoded = jwt.verify(token, useRuntimeConfig().jwtSecret);
|
||||
memberId = decoded.memberId;
|
||||
} catch (err) {
|
||||
throw createError({
|
||||
statusCode: 401,
|
||||
statusMessage: "Invalid or expired token",
|
||||
});
|
||||
}
|
||||
|
||||
const body = await validateBody(event, peerSupportUpdateSchema);
|
||||
const body = await validateBody(event, peerSupportUpdateSchema)
|
||||
|
||||
// Build update object for peer support settings
|
||||
const updateData = {
|
||||
"peerSupport.enabled": body.enabled || false,
|
||||
"peerSupport.skillTopics": body.skillTopics || [],
|
||||
"peerSupport.supportTopics": body.supportTopics || [],
|
||||
"peerSupport.availability": body.availability || "",
|
||||
"peerSupport.personalMessage": body.personalMessage || "",
|
||||
"peerSupport.slackUsername": body.slackUsername || "",
|
||||
};
|
||||
'peerSupport.enabled': body.enabled || false,
|
||||
'peerSupport.skillTopics': body.skillTopics || [],
|
||||
'peerSupport.supportTopics': body.supportTopics || [],
|
||||
'peerSupport.availability': body.availability || '',
|
||||
'peerSupport.personalMessage': body.personalMessage || '',
|
||||
'peerSupport.slackUsername': body.slackUsername || '',
|
||||
}
|
||||
|
||||
// If Slack username provided and peer support enabled, try to fetch Slack user ID
|
||||
if (body.enabled && body.slackUsername) {
|
||||
try {
|
||||
console.log(
|
||||
`[Peer Support] Attempting to fetch Slack user ID for: ${body.slackUsername}`,
|
||||
);
|
||||
)
|
||||
|
||||
// Dynamically import the Slack service
|
||||
const { getSlackService } = await import("../../../utils/slack.ts");
|
||||
const slackService = getSlackService();
|
||||
const { getSlackService } = await import('../../../utils/slack.ts')
|
||||
const slackService = getSlackService()
|
||||
|
||||
if (slackService) {
|
||||
console.log(
|
||||
"[Peer Support] Slack service initialized, looking up user...",
|
||||
);
|
||||
const slackUserId = await slackService.findUserIdByUsername(
|
||||
body.slackUsername,
|
||||
);
|
||||
console.log('[Peer Support] Slack service initialized, looking up user...')
|
||||
const slackUserId = await slackService.findUserIdByUsername(body.slackUsername)
|
||||
|
||||
if (slackUserId) {
|
||||
updateData["slackUserId"] = slackUserId;
|
||||
updateData['slackUserId'] = slackUserId
|
||||
console.log(
|
||||
`[Peer Support] ✓ Found Slack user ID for ${body.slackUsername}: ${slackUserId}`,
|
||||
);
|
||||
)
|
||||
|
||||
// Now get/create the DM channel
|
||||
console.log("[Peer Support] Opening DM channel...");
|
||||
const dmChannelId = await slackService.openDMChannel(slackUserId);
|
||||
console.log('[Peer Support] Opening DM channel...')
|
||||
const dmChannelId = await slackService.openDMChannel(slackUserId)
|
||||
|
||||
if (dmChannelId) {
|
||||
updateData["peerSupport.slackDMChannelId"] = dmChannelId;
|
||||
console.log(`[Peer Support] ✓ Got DM channel ID: ${dmChannelId}`);
|
||||
updateData['peerSupport.slackDMChannelId'] = dmChannelId
|
||||
console.log(`[Peer Support] ✓ Got DM channel ID: ${dmChannelId}`)
|
||||
} else {
|
||||
console.warn("[Peer Support] Could not get DM channel ID");
|
||||
console.warn('[Peer Support] Could not get DM channel ID')
|
||||
}
|
||||
} else {
|
||||
console.warn(
|
||||
`[Peer Support] Could not find Slack user ID for username: ${body.slackUsername}`,
|
||||
);
|
||||
)
|
||||
}
|
||||
} else {
|
||||
console.log(
|
||||
"[Peer Support] Slack service not configured, skipping user ID lookup",
|
||||
);
|
||||
console.log('[Peer Support] Slack service not configured, skipping user ID lookup')
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(
|
||||
"[Peer Support] Error fetching Slack user ID:",
|
||||
error.message,
|
||||
);
|
||||
console.error("[Peer Support] Stack trace:", error.stack);
|
||||
console.error('[Peer Support] Error fetching Slack user ID:', error.message)
|
||||
console.error('[Peer Support] Stack trace:', error.stack)
|
||||
// Continue anyway - we'll still save the username
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
const member = await Member.findByIdAndUpdate(
|
||||
memberId,
|
||||
const updated = await Member.findByIdAndUpdate(
|
||||
member._id,
|
||||
{ $set: updateData },
|
||||
{ new: true, runValidators: true },
|
||||
);
|
||||
)
|
||||
|
||||
if (!member) {
|
||||
if (!updated) {
|
||||
throw createError({
|
||||
statusCode: 404,
|
||||
statusMessage: "Member not found",
|
||||
});
|
||||
statusMessage: 'Member not found',
|
||||
})
|
||||
}
|
||||
|
||||
return {
|
||||
success: true,
|
||||
peerSupport: member.peerSupport,
|
||||
};
|
||||
peerSupport: updated.peerSupport,
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Peer support update error:", error);
|
||||
console.error('Peer support update error:', error)
|
||||
throw createError({
|
||||
statusCode: 500,
|
||||
statusMessage: "Failed to update peer support settings",
|
||||
});
|
||||
statusMessage: 'Failed to update peer support settings',
|
||||
})
|
||||
}
|
||||
});
|
||||
})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue