Skip to content

Commit cd81d24

Browse files
fix: email verification
1 parent edeb162 commit cd81d24

File tree

2 files changed

+28
-3
lines changed

2 files changed

+28
-3
lines changed

src/main/typescript/api/controllers/VerificationController.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -436,7 +436,9 @@ class VerificationController extends Controller {
436436
!entry.metadata ||
437437
typeof entry.metadata !== "object" ||
438438
!("emailToken" in entry.metadata) ||
439-
entry.metadata.emailToken !== emailToken
439+
entry.metadata.emailToken !== emailToken ||
440+
!("email" in entry.metadata) ||
441+
entry.metadata.email !== email
440442
) {
441443
return new Response({
442444
status: 403,
@@ -448,10 +450,11 @@ class VerificationController extends Controller {
448450
.service("verificationService")
449451
.verifyWithEntry(entry, {
450452
email,
453+
emailToken,
451454
method: VerificationMethod.EMAIL
452455
});
453456

454-
if (!result) {
457+
if (!result || result.error === "invalid_email") {
455458
return new Response({
456459
status: 403,
457460
body: { error: "We're unable to verify you, please try again." }

src/main/typescript/automod/VerificationService.ts

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,11 +199,32 @@ class VerificationService extends Service {
199199
return null;
200200
}
201201

202+
if (payload.method === VerificationMethod.EMAIL) {
203+
if (
204+
typeof entry.metadata !== "object" ||
205+
!entry.metadata ||
206+
!("email" in entry.metadata) ||
207+
!("emailToken" in entry.metadata) ||
208+
entry.metadata.email !== payload.email ||
209+
entry.metadata.emailToken !== payload.emailToken
210+
) {
211+
return {
212+
error: "invalid_email"
213+
};
214+
}
215+
216+
if (payload.emailToken) {
217+
delete payload.emailToken;
218+
}
219+
}
220+
202221
const existingRecord = await this.application.prisma.verificationRecord.findFirst({
203222
where: {
204223
guildId: guild.id,
205224
userId: entry.userId,
206-
...payload
225+
...(payload as {
226+
email?: string;
227+
})
207228
}
208229
});
209230

@@ -309,6 +330,7 @@ export type VerificationPayload = {
309330
googleId?: string;
310331
discordId?: string;
311332
email?: string;
333+
emailToken?: string;
312334
method: VerificationMethod;
313335
};
314336

0 commit comments

Comments
 (0)