fix: update dmarc to main domain and not sub domain (#200)

This commit is contained in:
KM Koushik
2025-08-23 22:30:20 +10:00
committed by GitHub
parent 060165b449
commit 8ce5e4b2dd
3 changed files with 15 additions and 14 deletions

View File

@@ -0,0 +1,3 @@
-- Reset all dmarcAdded to false since previous verification logic was incorrect
-- DMARC should be checked on main domain, not subdomain
UPDATE "Domain" SET "dmarcAdded" = false WHERE "dmarcAdded" = true;

View File

@@ -42,7 +42,7 @@ export default function DomainItemPage({
{ {
refetchInterval: (q) => (q?.state.data?.isVerifying ? 10000 : false), refetchInterval: (q) => (q?.state.data?.isVerifying ? 10000 : false),
refetchIntervalInBackground: true, refetchIntervalInBackground: true,
} },
); );
const verifyQuery = api.domain.startVerification.useMutation(); const verifyQuery = api.domain.startVerification.useMutation();
@@ -54,7 +54,7 @@ export default function DomainItemPage({
onSettled: () => { onSettled: () => {
domainQuery.refetch(); domainQuery.refetch();
}, },
} },
); );
}; };
@@ -194,11 +194,9 @@ export default function DomainItemPage({
<TableCell> <TableCell>
<div className="flex gap-2 items-center"> <div className="flex gap-2 items-center">
<span className="text-sm text-muted-foreground"> <span className="text-sm text-muted-foreground">
(optional) (recommended)
</span> </span>
<TextWithCopyButton <TextWithCopyButton value="_dmarc" />
value={`_dmarc.${domainQuery.data?.subdomain || domainQuery.data?.name}`}
/>
</div> </div>
</TableCell> </TableCell>
<TableCell className=""> <TableCell className="">
@@ -234,7 +232,7 @@ const DomainSettings: React.FC<{ domain: Domain }> = ({ domain }) => {
const utils = api.useUtils(); const utils = api.useUtils();
const [clickTracking, setClickTracking] = React.useState( const [clickTracking, setClickTracking] = React.useState(
domain.clickTracking domain.clickTracking,
); );
const [openTracking, setOpenTracking] = React.useState(domain.openTracking); const [openTracking, setOpenTracking] = React.useState(domain.openTracking);
@@ -247,7 +245,7 @@ const DomainSettings: React.FC<{ domain: Domain }> = ({ domain }) => {
utils.domain.invalidate(); utils.domain.invalidate();
toast.success("Click tracking updated"); toast.success("Click tracking updated");
}, },
} },
); );
} }
@@ -260,7 +258,7 @@ const DomainSettings: React.FC<{ domain: Domain }> = ({ domain }) => {
utils.domain.invalidate(); utils.domain.invalidate();
toast.success("Open tracking updated"); toast.success("Open tracking updated");
}, },
} },
); );
} }
return ( return (

View File

@@ -58,7 +58,7 @@ export async function createDomain(
teamId: number, teamId: number,
name: string, name: string,
region: string, region: string,
sesTenantId?: string sesTenantId?: string,
) { ) {
const domainStr = tldts.getDomain(name); const domainStr = tldts.getDomain(name);
@@ -105,7 +105,7 @@ export async function getDomain(id: number) {
if (domain.isVerifying) { if (domain.isVerifying) {
const domainIdentity = await ses.getDomainIdentity( const domainIdentity = await ses.getDomainIdentity(
domain.name, domain.name,
domain.region domain.region,
); );
const dkimStatus = domainIdentity.DkimAttributes?.Status; const dkimStatus = domainIdentity.DkimAttributes?.Status;
@@ -114,7 +114,7 @@ export async function getDomain(id: number) {
const verificationStatus = domainIdentity.VerificationStatus; const verificationStatus = domainIdentity.VerificationStatus;
const lastCheckedTime = const lastCheckedTime =
domainIdentity.VerificationInfo?.LastCheckedTimestamp; domainIdentity.VerificationInfo?.LastCheckedTimestamp;
const _dmarcRecord = await getDmarcRecord(domain.name); const _dmarcRecord = await getDmarcRecord(tldts.getDomain(domain.name)!);
const dmarcRecord = _dmarcRecord?.[0]?.[0]; const dmarcRecord = _dmarcRecord?.[0]?.[0];
domain = await db.domain.update({ domain = await db.domain.update({
@@ -150,7 +150,7 @@ export async function getDomain(id: number) {
export async function updateDomain( export async function updateDomain(
id: number, id: number,
data: { clickTracking?: boolean; openTracking?: boolean } data: { clickTracking?: boolean; openTracking?: boolean },
) { ) {
return db.domain.update({ return db.domain.update({
where: { id }, where: { id },
@@ -170,7 +170,7 @@ export async function deleteDomain(id: number) {
const deleted = await ses.deleteDomain( const deleted = await ses.deleteDomain(
domain.name, domain.name,
domain.region, domain.region,
domain.sesTenantId ?? undefined domain.sesTenantId ?? undefined,
); );
if (!deleted) { if (!deleted) {