Skip to content

Commit 11f7264

Browse files
dschomvpomerleau
authored andcommitted
bug(auth): Add verifiedSessionToken strategy to applicable routes
Because: - Some routes require a verified session state This Commit: - Uses the verifiedSessionToken auth strategy on these routes
1 parent a7e0098 commit 11f7264

7 files changed

Lines changed: 32 additions & 23 deletions

File tree

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,8 @@ export const mfaRoutes = (
253253
options: {
254254
pre: [{ method: featureEnabledCheck }],
255255
auth: {
256-
strategy: 'sessionToken',
256+
strategy: 'verifiedSessionToken',
257+
payload: false,
257258
},
258259
validate: {
259260
payload: isA.object({
@@ -274,7 +275,8 @@ export const mfaRoutes = (
274275
path: '/mfa/otp/verify',
275276
options: {
276277
auth: {
277-
strategy: 'sessionToken',
278+
strategy: 'verifiedSessionToken',
279+
payload: false,
278280
},
279281
validate: {
280282
payload: isA.object({

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,8 @@ module.exports = function (
8282
options: {
8383
...PASSWORD_DOCS.PASSWORD_CHANGE_START_POST,
8484
auth: {
85-
strategy: 'sessionToken',
86-
payload: 'required',
85+
strategy: 'verifiedSessionToken',
86+
payload: false,
8787
},
8888
validate: {
8989
payload: isA.object({

packages/fxa-auth-server/lib/routes/recovery-codes.js

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ module.exports = (log, db, config, customs, mailer, glean, statsd) => {
3434
options: {
3535
...RECOVERY_CODES_DOCS.RECOVERYCODES_GET,
3636
auth: {
37-
strategy: 'sessionToken',
37+
strategy: 'verifiedSessionToken',
38+
payload: false,
3839
},
3940
response: {
4041
schema: recoveryCodesSchema,
@@ -88,7 +89,8 @@ module.exports = (log, db, config, customs, mailer, glean, statsd) => {
8889
options: {
8990
...RECOVERY_CODES_DOCS.RECOVERY_CODES_POST,
9091
auth: {
91-
strategy: 'sessionToken',
92+
strategy: 'verifiedSessionToken',
93+
payload: false,
9294
},
9395
validate: {
9496
payload: recoveryCodesSchema,
@@ -108,13 +110,11 @@ module.exports = (log, db, config, customs, mailer, glean, statsd) => {
108110
// no previous backup codes should be in the database
109111
// the session should not yet have a higher assurance level
110112
const account = await db.account(uid);
111-
const { hasBackupCodes } =
112-
await backupCodeManager.getCountForUserId(uid);
113113
const hasTotpToken = await otpUtils.hasTotpToken({ uid });
114114
// for initial setup, only fail if totp is already enabled
115115
// if totp is not enabled/verified, it is safe to replace the recovery codes
116-
if (hasBackupCodes && hasTotpToken) {
117-
throw errors.recoveryCodesAlreadyExist();
116+
if (hasTotpToken) {
117+
throw errors.totpTokenAlreadyExists();
118118
}
119119

120120
const { recoveryCodes } = request.payload;
@@ -143,7 +143,8 @@ module.exports = (log, db, config, customs, mailer, glean, statsd) => {
143143
options: {
144144
...RECOVERY_CODES_DOCS.RECOVERY_CODES_PUT,
145145
auth: {
146-
strategy: 'sessionToken',
146+
strategy: 'verifiedSessionToken',
147+
payload: false,
147148
},
148149
validate: {
149150
payload: recoveryCodesSchema,

packages/fxa-auth-server/lib/routes/recovery-key.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ module.exports = (
3232
options: {
3333
...RECOVERY_KEY_DOCS.RECOVERYKEY_POST,
3434
auth: {
35-
strategy: 'sessionToken',
36-
payload: 'required',
35+
strategy: 'verifiedSessionToken',
36+
payload: false,
3737
},
3838
validate: {
3939
payload: isA.object({
@@ -395,7 +395,8 @@ module.exports = (
395395
options: {
396396
...RECOVERY_KEY_DOCS.RECOVERYKEY_DELETE,
397397
auth: {
398-
strategy: 'sessionToken',
398+
strategy: 'verifiedSessionToken',
399+
payload: false,
399400
},
400401
},
401402
async handler(request) {

packages/fxa-auth-server/lib/routes/recovery-phone.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1024,7 +1024,8 @@ export const recoveryPhoneRoutes = (
10241024
options: {
10251025
pre: [{ method: featureEnabledCheck }],
10261026
auth: {
1027-
strategy: 'sessionToken',
1027+
strategy: 'verifiedSessionToken',
1028+
payload: false,
10281029
},
10291030
validate: {
10301031
payload: isA.object({
@@ -1082,7 +1083,8 @@ export const recoveryPhoneRoutes = (
10821083
options: {
10831084
pre: [{ method: featureEnabledCheck }],
10841085
auth: {
1085-
strategy: 'sessionToken',
1086+
strategy: 'verifiedSessionToken',
1087+
payload: false,
10861088
},
10871089
validate: {
10881090
payload: isA.object({
@@ -1102,7 +1104,8 @@ export const recoveryPhoneRoutes = (
11021104
options: {
11031105
pre: [{ method: featureEnabledCheck }],
11041106
auth: {
1105-
strategy: 'sessionToken',
1107+
strategy: 'verifiedSessionToken',
1108+
payload: false,
11061109
},
11071110
validate: {
11081111
payload: isA.object({
@@ -1181,7 +1184,8 @@ export const recoveryPhoneRoutes = (
11811184
path: '/recovery_phone',
11821185
options: {
11831186
auth: {
1184-
strategy: 'sessionToken',
1187+
strategy: 'verifiedSessionToken',
1188+
payload: false,
11851189
},
11861190
},
11871191
handler: function (request: AuthRequest) {

packages/fxa-auth-server/lib/routes/totp.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -269,8 +269,8 @@ module.exports = (
269269
options: {
270270
...TOTP_DOCS.TOTP_CREATE_POST,
271271
auth: {
272-
strategy: 'sessionToken',
273-
payload: 'required',
272+
strategy: 'verifiedSessionToken',
273+
payload: false,
274274
},
275275
validate: {
276276
payload: isA.object({
@@ -615,7 +615,8 @@ module.exports = (
615615
options: {
616616
...TOTP_DOCS.TOTP_DESTROY_POST,
617617
auth: {
618-
strategy: 'sessionToken',
618+
strategy: 'verifiedSessionToken',
619+
payload: false,
619620
},
620621
response: {},
621622
},

packages/fxa-auth-server/test/local/routes/recovery-phone.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -481,9 +481,9 @@ describe('/recovery_phone', () => {
481481
);
482482
});
483483

484-
it('requires session authorization', () => {
484+
it('requires verified session authorization', () => {
485485
const route = getRoute(routes, '/recovery_phone/create', 'POST');
486-
assert.equal(route.options.auth.strategy, 'sessionToken');
486+
assert.equal(route.options.auth.strategy, 'verifiedSessionToken');
487487
});
488488
});
489489

0 commit comments

Comments
 (0)