Skip to content

Instantly share code, notes, and snippets.

class RegisterController extends BaseController {
Future<void> registerOrLogin(String phone) async {
Map<String, String> userAttributes = {'phone_number': phone, 'email': "ignored@ignored.com"};
try {
SignUpResult result = await Amplify.Auth.signUp(
username: phone,
password: "ThisIsIgnored!",
options: CognitoSignUpOptions(userAttributes: userAttributes));
Fimber.d("isSignUpComplete: ${result.isSignUpComplete}");
} on UsernameExistsException catch (_) {
functions:
....
#### COGNITO TRIGGERS
cognitoCreateAuthChallange:
handler: src/handlers/auth.create_auth_challange
events:
- cognitoUserPool:
pool: ${self:provider.environment.COGNITO_USER_POOL_NAME}
existing: true
trigger: CreateAuthChallenge
def define_auth_challange(event, context):
logger.info('define_auth_challange incoming event: ', event)
session_len = len(event['request']['session'])
last_session_index = session_len - 1
# The first auth request for CUSTOM_CHALLENGE from the AWSMobileClient (in iOS native app) actually comes in as an "SRP_A" challenge (BUG in AWS iOS SDK), so switch to CUSTOM_CHALLENGE and clear session.
if event['request']['session'] and session_len > 0 and event['request']['session'][last_session_index]['challengeName'] == "SRP_A":
event['request']['session'] = []
event['response']['issueTokens'] = False
event['response']['failAuthentication'] = False
event['response']['challengeName'] = 'CUSTOM_CHALLENGE'
def verify_auth_challenge(event, context):
logger.info('RECEIVED Event: ', event)
expectedAnswer = event['request']['privateChallengeParameters']['passCode']
if event['request']['challengeAnswer'] == expectedAnswer:
event['response']['answerCorrect'] = True
else:
event['response']['answerCorrect'] = False
def create_auth_challange(event, context):
logger.info('create_auth_challange incoming event: ', event)
phone = event['request']['userAttributes']['phone_number']
if phone == "+000000000000":
pass_code = "111111"
else:
pass_code = ''.join(["{}".format(randint(0, 9))
for num in range(0, 6)])
send_sms_with_external_provider(pass_Code) # This you replace with your own send sms API call
def pre_signup(event, context):
logger.info('RECEIVED Event: ', event)
event['response']['autoConfirmUser'] = True
event['response']['autoVerifyPhone'] = True
return event