Cognito - React

Card Puncher Data Processing

About

Aws - React and cognito is built into the auth amplify component.

Prerequisites

Installation

yarn add aws-amplify 
info All dependencies
├─ @aws-amplify/[email protected]
├─ @aws-amplify/[email protected]
├─ @aws-amplify/[email protected]
├─ @aws-amplify/[email protected]
├─ @aws-amplify/[email protected]
├─ @aws-amplify/[email protected]
├─ @aws-amplify/[email protected]
├─ [email protected]
├─ [email protected]
└─ [email protected]

yarn add aws-amplify-react 
info All dependencies
├─ [email protected]
├─ [email protected]
└─ [email protected]

Configuration

See Cognito - Amplify Auth Component

Usage

For React and React Native apps:

User Pool

React component

For the UI, see UI React components

withAuthenticator

The simplest way to add authentication flows into your app is to use the withAuthenticator Higher Order Component.

import { withAuthenticator } from 'aws-amplify-react';
export default withAuthenticator(App);

The withAuthenticator HOC wraps the Authenticator component.

Advanced: the Signature is (code)

withAuthenticator(Comp, includeGreetings = false, authenticatorComponents = [], federated = null, theme = null, signUpConfig = {})

You can then wrap it up like that if you want only three fields for the Signup

withAuthenticator(<App />, {
    federated: {
       google_client_id: "yourGoogleClientID"
    },
    signUpConfig: {
      header: "Create a new account for nico",
      hideAllDefaults: true,
      signUpFields: [
        {
          label: "Username",
          key: "username",
          required: true,
          placeholder: "Username",
          displayOrder: 1
        },
        {
          label: "Password",
          key: "password",
          required: true,
          placeholder: "Password",
          type: "password",
          displayOrder: 3
        },
        {
          label: "Email",
          key: "email",
          required: true,
          placeholder: "Email",
          type: "email",
          displayOrder: 2
        }
      ]
    }
  });

Ref: Allow simple customization of sign-up and sign-in attributes in React Authenticator #2160

Using authenticator directly gives you more customization options for your UI.

Authenticator

Using Authenticator gives more customization options for the UI. See doc

Example:

import { Authenticator, Greetings } from 'aws-amplify-react';

const federated = {
    google_client_id: 'yourGoogleClientID',
    facebook_app_id: 'yourFacebookClientID',
    amazon_client_id: 'yourAmazonClientID'
};

<Authenticator hide={[Greetings]} federated={federated}>
	<Main  />
</Authenticator>

Full options:

<Authenticator 
    // Optionally hard-code an initial state
    authState="signIn"
    // Pass in an already authenticated CognitoUser or FederatedUser object
    authData={CognitoUser | 'username'} 
    // Fired when Authentication State changes
    onStateChange={(authState) => console.log(authState)} 
    // An object referencing federation and/or social providers 
    // The federation here means federation with the Cognito Identity Pool Service
    // *** Only supported on React/Web (Not React Native) ***
    // For React Native use the API Auth.federatedSignIn()
    federated={myFederatedConfig}
    // A theme object to override the UI / styling
    theme={myCustomTheme} 
    // Hide specific components within the Authenticator
    hide={ 
        [
            Greetings,
            SignIn,
            ConfirmSignIn,
            RequireNewPassword,
            SignUp,
            ConfirmSignUp,
            VerifyContact,
            ForgotPassword,
            TOTPSetup,
            Loading
        ]
    }
    // or hide all the default components
    hideDefault={true}
    // Pass in an aws-exports configuration
    amplifyConfig={myAWSExports}
    // Pass in a message map for error strings
    errorMessage={myMessageMap}
>
    // Default components can be customized/passed in as child components. 
    // Define them here if you used hideDefault={true}
    <Greetings federated={federated}/>
    <SignIn federated={myFederatedConfig}/>
    <ConfirmSignIn/>
    <RequireNewPassword/>
    <SignUp signUpConfig={signUpConfig}/>
    <ConfirmSignUp/>
    <VerifyContact/>
    <ForgotPassword/>
    <TOTPSetup/>
    <Loading/>
</Authenticator>

Hosted UI

Amplify provides a withOAuth Higher Order Component to:

Identity Pool

Alternatively use Auth.federatedSignIn() to get AWS credentials directly from Cognito Federated Identities and not use User Pool federation. If you have logged in with Auth.signIn() you can not call Auth.federatedSignIn() as Amplify will perform this federation automatically for you in the background.

Documentation / Reference





Discover More
Card Puncher Data Processing
Aws - React

React in Aws See Deploy and host a ReactJS app with AWS Amplify Console ...
Card Puncher Data Processing
Cognito - Amplify Auth Component

Auth is a sub-component (called a category) of the amplify library and is a wrapper around amazon-cognito-identity-js All methods are available in the Auth...
Card Puncher Data Processing
Cognito - UI

UI forms in Cognito To reduce the operational overhead of creating and maintaining forms and custom logic for authentication, Cognito has a hosted-UI that leverages pages for: sign-up, sign-in,...



Share this page:
Follow us:
Task Runner