# Cognito MFA Package

This SDK is a wrapper for adding Biopass Multifactor authentications to applications which had their users in AWS Cognito.

### Table of Contents

**[Getting Started](#Getting-Started)**

**[Use React App](#Use-React-App)**

**[Use Angular App](#Use-Angular-App)**

**[Use Vue App](#Use-Vue-App)**

## Getting Started

Install the package

```bash
  npm install @locii/biopass-cognito-sdk
```

## Require the package

To import @locii/biopass-cognito-sdk, run the following command

```bash
import { BiopassAuth } from "@locii/biopass-cognito-sdk";

```

## After installing the packege, do the following steps:

**Step 1:** Create config file

```javascript
export const config = {
  Auth: {
    region: '',
    userPoolId: '',
    userPoolWebClientId: '',
    authenticationFlowType: 'CUSTOM_AUTH',
    clientMetadata: { redirectUri: 'http://localhost:3000/login' },
  }
};
```

`redirectUri:` The user is redirected to this address after authentication.
Please make sure this is exactly same as the Allowed Callback URL setting in Biopass application.


**Step 2:**

```javascript
import { Amplify } from 'aws-amplify';
    "@aws-amplify/ui-angular": "^3.2.10",
import * as ui from '@aws-amplify/ui-angular';
import config from './amplify-config';
Amplify.configure(config);
```

## Use React App

When signing in with user name and password, you will pass in the username and the password to the `signin` method of the Auth class.

### Sign-In

```
import { BiopassAuth } from "@locii/biopass-cognito-sdk";

const login = async (event) => {
      BiopassAuth.signin(username, password)
        .then((res) => {
          // add your code
        })
        .catch((err) => // add your code);
  };

  useEffect(() => {
    BiopassAuth.resumeSignIn()
      .then((user) => {
       // add your code
      })
      .catch((err) => {
       // add your code
      });

  }, []);

```

### Sign-Out

```
import { Auth } from 'aws-amplify';

async function signOut() {
    try {
        await Auth.signOut();
    } catch (error) {
        console.log('error signing out: ', error);
    }
}

```

## Use Angular App

When signing in with user name and password, you will pass in the username and the password to the `signin` method of the Auth class.

### Global config

Add a below command in Ployfills.ts

```
(window as any).global = window;
```

### Sign-In

```
import { BiopassAuth } from "@locii/biopass-cognito-sdk";

  ngOnInit() {
    your code ...
    BiopassAuth.resumeSignIn()
      .then((user) => {
        console.log('userr', user);
        // add your code
      })
      .catch((err) => {
        // add your code
      });
  }

  login() {
      BiopassAuth.signin(this.username.value, this.password.value)
        .then((res) => {
          // add your code
        })
        .catch((err) => // add your code);
  }

```

### Sign-Out

```
import { Auth } from 'aws-amplify';

  logout() {
    try {
      Auth.signOut();
    } catch (error) {
      console.log('error signing out: ', error);
    }
  }

```

## Use Vue App

When signing in with user name and password, you will pass in the username and the password to the `signin` method of the Auth class.

### Global config

Add a below command in App.vue

```
var global = window
```

### Sign-In

```
import { BiopassAuth } from "@locii/biopass-cognito-sdk";

  created() {
    BiopassAuth.resumeSignIn()
      .then((user) => {
        // add your code
      })
      .catch((err) => {
        // add your code
      })
  },
  methods: {

    login() {
      //add your code

        BiopassAuth.signin(this.username, this.password)
          .then((res) => {
            // add your code
          })
          .catch((err) => console.log('asasasas'))
    }
  }

```

### Sign-Out

```
import { Auth } from 'aws-amplify';

  logout() {
    try {
      Auth.signOut();
    } catch (error) {
      console.log('error signing out: ', error);
    }
  }

```
