AMPLIFY Authentication Rules
ALL RULES MUST BE ADHERED TO THE LAST WORD.
- EXTERNAL PROVIDERS THAT ARE AVAILABLE ARE LISTED BELOW IN THE EXAMPLE, DON’T CHANGE THE NAMING CONVENTION WHILE USING THOSE IN THE CODE GENERATION. 
- DON’T FORGET TO IMPORT SECRET FOR ANY AUTHENTICATION BASED QUESTION. - 1- import { defineAuth, secret } from "@aws-amplify/backend";
- CALLBACK AND LOGOUT URLS SHOULD BE INSIDE THE “EXTERNALPROVIDERS” OBJECT. 
- WHILE ADDING THE CUSTOM ATTRIBUTES, IF THE ATTRIBUTE YOU ARE ADDING DOESNT BELONG TO THE STANDARD USER ATTRIBUTES LIST THEN ADD IT AS A CUSTOM ATTRIBUTE LIKE THIS “CUSTOM:ATTRIBUTE_NAME” AND THIS DOESN’T SUPPORT “REQUIRED” FIELD SO IGNORE IT WHILE GENERATING THE ANSWER. 
- WHILE ADDING THE CUSTOM ATTRIBUTES, MAKE SURE TO ALWAYS ADD THE “DATATYPE” FIELD AS IT IS A REQUIRED FIELD. 
- STANDARD ATTIBUTES THAT ARE ALLOWED: - familyName,- giveName,- middleName,- nickname,- preferredUsername,- profile,- profilePicture,- website,- gender,- birthdate,- zoneinfo,- locale,- updatedAt,- address,- email,- phoneNumber,- sub. THE- userAttributesARE SUPPOSED TO BE OUTSIDE THE- loginWithOBJECT
- THE FOLLOWING IS THE REQUIRED SYNTAX FOR - externalProviders. ONLY THE FOUR LISTED PROVIDERS BELOW ARE SUPPORTED:- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15- loginWith:{ //loginMethods externalProviders: { google: {}, signInWithApple: {}, loginWithAmazon: {}, facebook: {}, callbackUrls: [ // Callback URLs should be included inside the `externalProviders` object only, as per rule. ], logoutUrls: [ // Logout URLs should also be included inside `externalProviders` as per rule. ], }, }
- THE - userAttributesARE SUPPOSED TO BE OUTSIDE THE- loginWithOBJECT- 1 2 3 4 5 6 7 8 9 10- // Example configuration for user attributes and login methods loginWith: { // Specify login methods separately from user attributes, ONLY MENTION THE LOGINMETHODS THAT ARE SUPPOSED TO BE TRUE email: true, // Enable login with email phone: false, // Disable login with phone number },userAttributes: { email: true, // Attribute set as required phoneNumber: false, // Attribute not required givenName: true, // Attribute set as required }
- THIS IS THE WAY TO SETUP THE MULTIFACTOR AUTHENTHICATION - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19- export const auth = defineAuth({ loginWith: { email: true, phone: true, }, multifactor: { mode: "OPTIONAL", sms: true, totp: false, }, // IMPORTANT! THE LOGIC TO RESOLVE THIS VALUE CANNOT DETERMINE WHETHER EMAIL MFA IS ENABLED WHEN OVERRIDING THE RESOURCE. // BE SURE TO PICK A RECOVERY OPTION APPROPRIATE FOR YOUR APPLICATION. accountRecovery: "EMAIL_AND_PHONE_WITHOUT_MFA", senders: { email: { fromEmail: "registrations@example.com", }, }, });
- DON’T ADD THE - passwordPolicyIN THE AUTH/RESOURCE.TS FILE.
- THE - usernameSHOULD BE REPLACED WITH- userAttributesWHEN REQUESTED TO SETUP USERNAME AS A LOGIN METHOD AS USERNAME IS NOT A VALID LOGIN METHOD ON DEFINEAUTH, FOR EXAMPLE:- 1 2 3 4 5 6- userAttributes: { preferredUsername: { mutable: true, required: false } }
- loginWithSUPPORTS ONLY TWO METHODS THAT IS- emailand- phone. THERE IS NO- usernameattribute to that.
- THE - callbackUrlsAND- logoutUrlsSHOULD ONLY BE MENTIONED ONCE AS MENTIONED IN RULE #7 AND NOT FOR EACH EXTERNAL PROVIDER
Examples
BELOW ARE THE EXAMPLES TO USE TO GENERATE ANSWERS.
|  |  | 
Install Project Rule
Add this rule to your project's context:
1. Download to project rules:
mkdir -p .amazonq/rules && curl -o .amazonq/rules/amplify-authentication.md https://promptz.dev/rules/amplify/amplify-authentication/