Send the invitation as a light letter that names the community, the inviter by email, and who can read the Rule.

This commit is contained in:
adilallo committed 2026-11-06 09:00:44 -07:00
1 parent 70ceb73104
commit 727a92a9ac
14 files changed
+534 -26

No files matched your search

@@ -46,7 +46,7 @@ export const POST = apiRoute<RouteContext>(
email: true,
inviteTokenHash: true,
inviteExpiresAt: true,
rule: { select: { userId: true, title: true } },
rule: { select: { userId: true, title: true, summary: true, document: true } },
},
});
@@ -93,9 +93,18 @@ export const POST = apiRoute<RouteContext>(
},
});
const verifyUrl = stakeholderInviteVerifyUrl(getPublicOrigin(request), token);
const origin = getPublicOrigin(request);
const verifyUrl = stakeholderInviteVerifyUrl(origin, token);
try {
await sendRuleStakeholderInviteEmail(row.email, verifyUrl, row.rule.title);
await sendRuleStakeholderInviteEmail({
to: row.email,
verifyUrl,
origin,
communityName: row.rule.title,
inviterEmail: user.email,
summary: row.rule.summary,
document: row.rule.document,
});
} catch (err) {
logRouteError("rules.stakeholders.resend", requestId, err, {
phase: "sendRuleStakeholderInviteEmail",
+4 -1
View File
@@ -31,7 +31,7 @@ type RouteContext = { params: Promise<{ id: string }> };
async function ownedRuleMeta(ruleId: string, userId: string) {
return prisma.publishedRule.findFirst({
where: { id: ruleId, userId },
select: { id: true, title: true },
select: { id: true, title: true, summary: true, document: true },
});
}
@@ -159,8 +159,11 @@ export const POST = apiRoute<RouteContext>(
origin,
ruleId: rule.id,
ruleTitle: rule.title,
summary: rule.summary,
document: rule.document,
email,
invitedByUserId: user.id,
inviterEmail: user.email,
pepper,
});
+9 -1
View File
@@ -208,7 +208,15 @@ export const POST = apiRoute(
try {
for (const inv of invites) {
const verifyUrl = stakeholderInviteVerifyUrl(origin, inv.token);
await sendRuleStakeholderInviteEmail(inv.email, verifyUrl, title);
await sendRuleStakeholderInviteEmail({
to: inv.email,
verifyUrl,
origin,
communityName: title,
inviterEmail: user.email,
summary,
document,
});
}
} catch (err) {
logRouteError("rules.publish", requestId, err, {