Skip to content

Commit 2615da7

Browse files
authored
Merge pull request #18266 from mozilla/polish-auth-client-recovery-phone
polish(auth-client): Update auth client recovery-phone api
2 parents 8c256fe + f5659ff commit 2615da7

2 files changed

Lines changed: 71 additions & 6 deletions

File tree

packages/fxa-auth-client/lib/client.ts

Lines changed: 69 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2260,6 +2260,13 @@ export default class AuthClient {
22602260
);
22612261
}
22622262

2263+
/**
2264+
* Tries to register a recovery phone number
2265+
*
2266+
* @param sessionToken The user's current session token
2267+
* @param phoneNumber The phone number to register. Should be E.164 format
2268+
* @param headers
2269+
*/
22632270
async recoveryPhoneCreate(
22642271
sessionToken: string,
22652272
phoneNumber: string,
@@ -2273,6 +2280,11 @@ export default class AuthClient {
22732280
);
22742281
}
22752282

2283+
/**
2284+
* Checks to see if a recovery phone is available in the user's region.
2285+
* @param sessionToken The user's current session token
2286+
* @param headers
2287+
*/
22762288
async recoveryPhoneAvailable(sessionToken: string, headers?: Headers) {
22772289
return this.sessionPost(
22782290
'/recovery_phone/available',
@@ -2282,20 +2294,35 @@ export default class AuthClient {
22822294
);
22832295
}
22842296

2285-
async recoveryPhoneConfirm(
2297+
/**
2298+
* Confirms the code sent to the recovery phone when recoveryPhoneCreate was called.
2299+
*
2300+
* @param sessionToken The user's current session token
2301+
* @param code The otp code sent to the user's phone
2302+
* @param headers
2303+
*/
2304+
async recoveryPhoneConfirmSetup(
22862305
sessionToken: string,
22872306
code: string,
22882307
headers?: Headers
22892308
) {
22902309
return this.sessionPost(
2291-
'/recovery_phone/available',
2310+
'/recovery_phone/confirm',
22922311
sessionToken,
2293-
{ code },
2312+
{
2313+
code,
2314+
},
22942315
headers
22952316
);
22962317
}
22972318

2298-
async recoveryPhoneSendCode(sessionToken: string, headers?: Headers) {
2319+
/**
2320+
* Sends a code to the users phone during a signin flow.
2321+
*
2322+
* @param sessionToken The user's current session token
2323+
* @param headers
2324+
*/
2325+
async recoveryPhoneSigninSendCode(sessionToken: string, headers?: Headers) {
22992326
return this.sessionPost(
23002327
'/recovery_phone/signin/send_code',
23012328
sessionToken,
@@ -2304,10 +2331,48 @@ export default class AuthClient {
23042331
);
23052332
}
23062333

2334+
/**
2335+
* Confirms the code sent to the recovery phone during a sign in flow.
2336+
*
2337+
* @param sessionToken The user's current session token
2338+
* @param code The otp code sent to the user's phone
2339+
* @param headers
2340+
*/
2341+
async recoveryPhoneSignInConfirm(
2342+
sessionToken: string,
2343+
code: string,
2344+
headers?: Headers
2345+
) {
2346+
return this.sessionPost(
2347+
'/recovery_phone/signin/confirm',
2348+
sessionToken,
2349+
{
2350+
code,
2351+
},
2352+
headers
2353+
);
2354+
}
2355+
2356+
/**
2357+
* Removes a recovery phone from the user's account
2358+
*
2359+
* @param sessionToken The user's current session token
2360+
* @param headers
2361+
*/
23072362
async recoveryPhoneDelete(sessionToken: string, headers?: Headers) {
23082363
return this.sessionDelete('/recovery_phone', sessionToken, {}, headers);
23092364
}
23102365

2366+
/**
2367+
* Gets status of the recovery phone on the users account.\
2368+
* @param sessionToken The user's current session token
2369+
* @param headers
2370+
* @returns { exists:boolean, phoneNumber: string }
2371+
*/
2372+
async recoveryPhoneGet(sessionToken: string, headers?: Headers) {
2373+
return this.sessionGet('/recovery_phone', sessionToken, headers);
2374+
}
2375+
23112376
protected async getPayloadV2({
23122377
kB,
23132378
v1,

packages/fxa-auth-client/test/crypto.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
randomKey,
1313
getRecoveryKeyIdByUid,
1414
} from 'fxa-auth-client/lib/recoveryKey';
15-
import { createSaltV1, createSaltV2 } from '../lib/salt';
15+
import { createSaltV2 } from '../lib/salt';
1616
import { hexToUint8 } from 'fxa-auth-client/lib/utils';
1717

1818
const uid = 'aaaaabbbbbcccccdddddeeeeefffff00';
@@ -52,7 +52,7 @@ describe('lib/crypto', () => {
5252
it('returns the correct authPW and unwrapBKey with V2 salt', async () => {
5353
const password = 'pässwörd';
5454
const clientSalt = createSaltV2('0123456789abcdef0123456789abcdef');
55-
const keys = await getCredentialsV2({password, clientSalt});
55+
const keys = await getCredentialsV2({ password, clientSalt });
5656
assert.equal(
5757
keys.authPW,
5858
'd278c764bd1852a14bfc4e9d8c1682b4f1a57edb9a9372bf8c370cc41592155b'

0 commit comments

Comments
 (0)