in packages/ui/src/machines/authenticator/index.ts [137:187]
config(context, event) {
// The CLI uses uppercased constants in `aws-exports.js`, while `parameters.json` are lowercase.
// We use lowercase to be consistent with previous versions' values.
const cliLoginMechanisms =
event.data.aws_cognito_username_attributes?.map((s) =>
s.toLowerCase()
) ?? [];
const cliVerificationMechanisms =
event.data.aws_cognito_verification_mechanisms?.map((s) =>
s.toLowerCase()
) ?? [];
const cliSignUpAttributes =
event.data.aws_cognito_signup_attributes?.map((s) =>
s.toLowerCase()
) ?? [];
const cliSocialProviders =
event.data.aws_cognito_social_providers?.map((s) =>
s.toLowerCase()
) ?? [];
// By default, Cognito assumes `username`, so there isn't a different username attribute like `email`.
// We explicitly add it as a login mechanism to be consistent with Admin UI's language.
if (cliLoginMechanisms.length === 0) {
cliLoginMechanisms.push('username');
}
// Prefer explicitly configured settings over default CLI values\
const {
loginMechanisms,
signUpAttributes,
socialProviders,
initialState,
} = context.config;
return {
loginMechanisms: loginMechanisms ?? cliLoginMechanisms,
signUpAttributes:
signUpAttributes ??
Array.from(
new Set([
...cliVerificationMechanisms,
...cliSignUpAttributes,
])
),
socialProviders: socialProviders ?? cliSocialProviders.sort(),
initialState,
};
},