Skip to content

Commit e3b44e9

Browse files
authored
Merge pull request #20311 from mozilla/passwordless-cors-server-side
feat(): enable CORS server-side for passwordless POST requests
2 parents 265c3de + 9be6819 commit e3b44e9

1 file changed

Lines changed: 25 additions & 2 deletions

File tree

packages/fxa-auth-server/lib/routes/passwordless.ts

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,13 @@ class PasswordlessHandler {
181181
request
182182
);
183183

184-
return this.generateAndSendOtp(request, email, account, isNewAccount, false);
184+
return this.generateAndSendOtp(
185+
request,
186+
email,
187+
account,
188+
isNewAccount,
189+
false
190+
);
185191
}
186192

187193
async confirmCode(request: AuthRequest) {
@@ -545,12 +551,20 @@ export function passwordlessRoutes(
545551
authServerCacheRedis
546552
);
547553

554+
// Enable CORS credentials only when using explicit origins (not wildcard, per CORS spec)
555+
const enableCredentials = config.corsOrigin && config.corsOrigin[0] !== '*';
556+
548557
return [
549558
{
550559
method: 'POST',
551560
path: '/account/passwordless/send_code',
552561
options: {
553562
...PASSWORDLESS_DOCS.PASSWORDLESS_SEND_CODE_POST,
563+
...(enableCredentials && {
564+
cors: {
565+
credentials: true,
566+
},
567+
}),
554568
auth: false,
555569
validate: {
556570
payload: isA.object({
@@ -575,6 +589,11 @@ export function passwordlessRoutes(
575589
path: '/account/passwordless/confirm_code',
576590
options: {
577591
...PASSWORDLESS_DOCS.PASSWORDLESS_CONFIRM_CODE_POST,
592+
...(enableCredentials && {
593+
cors: {
594+
credentials: true,
595+
},
596+
}),
578597
auth: false,
579598
validate: {
580599
payload: isA.object({
@@ -613,6 +632,11 @@ export function passwordlessRoutes(
613632
path: '/account/passwordless/resend_code',
614633
options: {
615634
...PASSWORDLESS_DOCS.PASSWORDLESS_RESEND_CODE_POST,
635+
...(enableCredentials && {
636+
cors: {
637+
credentials: true,
638+
},
639+
}),
616640
auth: false,
617641
validate: {
618642
payload: isA.object({
@@ -634,4 +658,3 @@ export function passwordlessRoutes(
634658
},
635659
];
636660
}
637-

0 commit comments

Comments
 (0)