From 4b504b9a3f2f7824caffdc91a08dc55d5e5f0ac8 Mon Sep 17 00:00:00 2001 From: Sotiria Stefa <72135844+SotiriaSte@users.noreply.github.com> Date: Mon, 12 Sep 2022 19:33:33 +0300 Subject: [PATCH] fix(authentication): twoFaMethod missing param in admin routes (#321) --- modules/authentication/src/admin/index.ts | 1 + modules/authentication/src/admin/user.ts | 10 +++++++++- modules/sms/src/providers/twilio.ts | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/modules/authentication/src/admin/index.ts b/modules/authentication/src/admin/index.ts index d4d447bd8..97129a71a 100644 --- a/modules/authentication/src/admin/index.ts +++ b/modules/authentication/src/admin/index.ts @@ -98,6 +98,7 @@ export class AdminHandlers { isVerified: ConduitBoolean.Optional, hasTwoFA: ConduitBoolean.Optional, phoneNumber: ConduitString.Optional, + twoFaMethod: ConduitString.Optional, }, }, new ConduitRouteReturnDefinition('PatchUser', userFields), diff --git a/modules/authentication/src/admin/user.ts b/modules/authentication/src/admin/user.ts index 739ccc45e..7ce1a8706 100644 --- a/modules/authentication/src/admin/user.ts +++ b/modules/authentication/src/admin/user.ts @@ -74,7 +74,8 @@ export class UserAdmin { } async patchUser(call: ParsedRouterRequest): Promise { - const { id, email, isVerified, hasTwoFA, phoneNumber } = call.request.params; + const { id, email, isVerified, hasTwoFA, phoneNumber, twoFaMethod } = + call.request.params; const user: User | null = await User.getInstance().findOne({ _id: id }); if (isNil(user)) { @@ -85,12 +86,19 @@ export class UserAdmin { 'Can not enable 2fa without a phone number', ); } + if (twoFaMethod !== 'phone') { + throw new GrpcError( + status.INVALID_ARGUMENT, + 'Can not enable 2fa with other method than phone', + ); + } const query = { email: email ?? user.email, isVerified: isVerified ?? user.isVerified, hasTwoFA: hasTwoFA ?? user.hasTwoFA, phoneNumber: phoneNumber ?? user.phoneNumber, + twoFaMethod: twoFaMethod ?? user.twoFaMethod, }; const res: User | null = await User.getInstance().findByIdAndUpdate(user._id, query); diff --git a/modules/sms/src/providers/twilio.ts b/modules/sms/src/providers/twilio.ts index db6de1a76..53ae75929 100644 --- a/modules/sms/src/providers/twilio.ts +++ b/modules/sms/src/providers/twilio.ts @@ -46,7 +46,7 @@ export class TwilioProvider implements ISmsProvider { }); if (!verification) { - return Promise.reject(Error('could not send verication code')); + return Promise.reject(Error('could not send verification code')); } return Promise.resolve(verification.sid);