From d7a90c4d91815d669e5eae0a73ef63449e412319 Mon Sep 17 00:00:00 2001 From: Mo Date: Thu, 29 Sep 2022 09:13:05 -0500 Subject: [PATCH] refactor: add pkc fields for registration endpoint (#1680) --- .../Domain/Client/User/UserApiService.spec.ts | 16 ++++++++++++--- .../src/Domain/Client/User/UserApiService.ts | 20 +++++++++---------- .../Client/User/UserApiServiceInterface.ts | 12 +++++------ .../User/UserRegistrationRequestParams.ts | 2 ++ .../lib/Services/Session/SessionManager.ts | 2 +- packages/snjs/mocha/lib/factory.js | 6 +++++- 6 files changed, 37 insertions(+), 21 deletions(-) diff --git a/packages/api/src/Domain/Client/User/UserApiService.spec.ts b/packages/api/src/Domain/Client/User/UserApiService.spec.ts index f9737d7b6..0b1af51dc 100644 --- a/packages/api/src/Domain/Client/User/UserApiService.spec.ts +++ b/packages/api/src/Domain/Client/User/UserApiService.spec.ts @@ -24,7 +24,12 @@ describe('UserApiService', () => { }) it('should register a user', async () => { - const response = await createService().register('test@test.te', 'testpasswd', keyParams, false) + const response = await createService().register({ + email: 'test@test.te', + serverPassword: 'testpasswd', + keyParams, + ephemeral: false, + }) expect(response).toEqual({ data: { @@ -52,7 +57,7 @@ describe('UserApiService', () => { let error = null try { - await service.register('test@test.te', 'testpasswd', keyParams, false) + await service.register({ email: 'test@test.te', serverPassword: 'testpasswd', keyParams, ephemeral: false }) } catch (caughtError) { error = caughtError } @@ -67,7 +72,12 @@ describe('UserApiService', () => { let error = null try { - await createService().register('test@test.te', 'testpasswd', keyParams, false) + await createService().register({ + email: 'test@test.te', + serverPassword: 'testpasswd', + keyParams, + ephemeral: false, + }) } catch (caughtError) { error = caughtError } diff --git a/packages/api/src/Domain/Client/User/UserApiService.ts b/packages/api/src/Domain/Client/User/UserApiService.ts index b4a261b1c..f5e076325 100644 --- a/packages/api/src/Domain/Client/User/UserApiService.ts +++ b/packages/api/src/Domain/Client/User/UserApiService.ts @@ -15,12 +15,12 @@ export class UserApiService implements UserApiServiceInterface { this.registering = false } - async register( - email: string, - serverPassword: string, - keyParams: RootKeyParamsInterface, - ephemeral: boolean, - ): Promise { + async register(registerDTO: { + email: string + serverPassword: string + keyParams: RootKeyParamsInterface + ephemeral: boolean + }): Promise { if (this.registering) { throw new ApiCallError(ErrorMessage.RegistrationInProgress) } @@ -29,10 +29,10 @@ export class UserApiService implements UserApiServiceInterface { try { const response = await this.userServer.register({ [ApiEndpointParam.ApiVersion]: ApiVersion.v0, - password: serverPassword, - email, - ephemeral, - ...keyParams.getPortableValue(), + password: registerDTO.serverPassword, + email: registerDTO.email, + ephemeral: registerDTO.ephemeral, + ...registerDTO.keyParams.getPortableValue(), }) this.registering = false diff --git a/packages/api/src/Domain/Client/User/UserApiServiceInterface.ts b/packages/api/src/Domain/Client/User/UserApiServiceInterface.ts index 35952b73b..89feed373 100644 --- a/packages/api/src/Domain/Client/User/UserApiServiceInterface.ts +++ b/packages/api/src/Domain/Client/User/UserApiServiceInterface.ts @@ -2,10 +2,10 @@ import { RootKeyParamsInterface } from '@standardnotes/models' import { UserRegistrationResponse } from '../../Response/User/UserRegistrationResponse' export interface UserApiServiceInterface { - register( - email: string, - serverPassword: string, - keyParams: RootKeyParamsInterface, - ephemeral: boolean, - ): Promise + register(registerDTO: { + email: string + serverPassword: string + keyParams: RootKeyParamsInterface + ephemeral: boolean + }): Promise } diff --git a/packages/api/src/Domain/Request/User/UserRegistrationRequestParams.ts b/packages/api/src/Domain/Request/User/UserRegistrationRequestParams.ts index eee43049e..126305d9f 100644 --- a/packages/api/src/Domain/Request/User/UserRegistrationRequestParams.ts +++ b/packages/api/src/Domain/Request/User/UserRegistrationRequestParams.ts @@ -8,4 +8,6 @@ export type UserRegistrationRequestParams = AnyKeyParamsContent & { email: string ephemeral: boolean [additionalParam: string]: unknown + pkcPublicKey?: string + pkcEncryptedPrivateKey?: string } diff --git a/packages/snjs/lib/Services/Session/SessionManager.ts b/packages/snjs/lib/Services/Session/SessionManager.ts index 25b3a5af1..98d238250 100644 --- a/packages/snjs/lib/Services/Session/SessionManager.ts +++ b/packages/snjs/lib/Services/Session/SessionManager.ts @@ -286,7 +286,7 @@ export class SNSessionManager extends AbstractService implements S const serverPassword = rootKey.serverPassword as string const keyParams = rootKey.keyParams - const registerResponse = await this.userApiService.register(email, serverPassword, keyParams, ephemeral) + const registerResponse = await this.userApiService.register({ email, serverPassword, keyParams, ephemeral }) if ('error' in registerResponse.data) { throw new ApiCallError((registerResponse.data as HttpErrorResponseBody).error.message) diff --git a/packages/snjs/mocha/lib/factory.js b/packages/snjs/mocha/lib/factory.js index b62673491..dec273d02 100644 --- a/packages/snjs/mocha/lib/factory.js +++ b/packages/snjs/mocha/lib/factory.js @@ -144,7 +144,11 @@ export async function registerOldUser({ application, email, password, version }) const operator = application.protocolService.operatorManager.operatorForVersion(version) const accountKey = await operator.createRootKey(email, password, KeyParamsOrigination.Registration) - const response = await application.userApiService.register(email, accountKey.serverPassword, accountKey.keyParams) + const response = await application.userApiService.register({ + email: email, + serverPassword: accountKey.serverPassword, + keyParams: accountKey.keyParams, + }) /** Mark all existing items as dirty. */ await application.itemManager.changeItems(application.itemManager.items, (m) => { m.dirty = true