Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(authenticator): make phone number mandatory when "required" option is specified #5794

Draft
wants to merge 28 commits into
base: main
Choose a base branch
from

Conversation

ekjotmultani
Copy link
Member

Issue #, if available: #4079

Description of changes:

This is done in the exact same way as #4106 from November last year. This fix was correct for the main issue in the original issue however it didn't address being able to re-input a dial code and still have it pass through validation

Truncate a re-inputted dial code if it exceeds the maximum length of a phone number from that given country
Using a map of dial codes to their countries' maximum length of phone number (generated from this open source repo), we will check if the inputted phone number begins with the selected dial code, if it does, then check if it surpasses the length of number in that country (since it could be the case that the number naturally begins with the dial code), if this is also true then ignore the repeat dial code and take the leftover number as the phone number

Credit: @Jordan-Nelson for most of the code

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

ekjotmultani and others added 28 commits September 27, 2024 16:43
@@ -164,6 +165,58 @@ mixin AuthenticatorUsernameField<FieldType extends Enum,
}
}

String displayPhoneNumber(String? phoneNumber) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why is this method defined 3 times in this file? I see there are small differences in the implementation, don't know if it is a Dart thing that I am not familiar with

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good to note that the comments seem copy pasted too

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is because i accidentally copy pasted it too many times, it should be two different functions

@@ -183,7 +236,7 @@ mixin AuthenticatorUsernameField<FieldType extends Enum,
isOptional: isOptional,
context: context,
inputResolver: stringResolver.inputs,
)(input?.username);
)(displayPhoneNumber(input?.username));

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we are passing the username as a param into the phone number method? that doesn't seem right

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The username can be a phone number, and at that point in the code its been validated as such. We use AWS Cognito as our base provider for auth, which accepts phone and email as usernames if it has been configured that way.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TIL! thank you for explaining :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants