npm package: @ruptjs/rupt-react-native
Description: Rupt SDK for React Native
Author: Rupt
Latest version: 0.1.25

# @ruptjs/rupt-react-native

Rupt SDK for React Native. Library for monitoring and preventing account sharing in web apps.

## Installation

### Using a package manager

yarn

```sh
yarn add @ruptjs/rupt-react-native
```

npm

```sh
npm install @ruptjs/rupt-react-native
```

::

## Usage

The two main ways to implement Rupt into your project:

1. Import react-native UI component

```js
import { RuptProvider } from "@ruptjs/rupt-react-native";
```

Import the `RuptProvider` component to link the device to the account. You must pass the `client_id` and a `account`.

```js
 <RuptProvider
   // required
   clientId={client_id}
   account={account_id}
   // optional
   email={user_email},
   phone={user_phone},
   matadata={},
   callbacks={{
      onSuccess,
      onChallenge,
      onNewAccount,
      onSuspended,
      onLimitExceeded,
      onCurrentDeviceLogout,
   }}
   debug={false}
   />
```

2. Custom integration (no UI)

- Attach devices to accounts. Ideally you should do this on every page once.
- Detach devices from accounts. You should do this when the user logs out.

By doing these two things, Rupt associates devices to accounts and detect behaviors that indicate account sharing. For more on this, see [How account sharing prevention works?](/docs/how-account-sharing-prevention-works)

### Attach a device

First import the script (only if you installed using a package manager)

```js
import { attach, detach } from "@ruptjs/rupt-react-native";
```

Call the `attach` function to link the device to the account. You must pass the `client_id` and a `account`.

```js
const { device_id } = await attach({
  client_id: "client_id",
  account: "account_id",
  email: "user_email", // Optional
  phone: "user_phone", // Optional
  matadata: {}, // Optional
  redirect_urls: {
    logout_url: "https://your-logout-url.com",
    new_account_url: "https://your-create-new-account-url.com",
  },
});
```

::alert{type="tip"}
The `email` and `phone` are optional but strongly recommended. If you want to ask users to verify accounts before they kick out other people using their account, you should provide the `email` and `phone` fields.
::

Rupt will take care of the rest. If Rupt determines there's misbehavior, it will trigger a challenge. For more on this, see [Challenges](/docs/the-basics/challenges)

### Detach a device

By default, devices are [automatically detached](/docs/the-basics/automatically-detaching-devices) if they are not used for 1 week. You can change this behavior in the dashboard [settings](https://dashboard.rupt.dev/settings).

But you should also call the `detach` function when the user logs out. This will ensure that Rupt has the most up-to-date information about the devices associated with the account. To do this, call the `detach` function like so:

```js
await detach({
  client_id: `client_id`,
  account: `account_id`,
  device: `device_id`,
});
```

The `device` field takes the device ID that is returned in the `attach` function response as `device_id`. Finally, when a detach function is called, it triggers the logout flow so the user will be redirected to the `callbacks.logout_url` in the target device. Ensure that you have set the `logout_url` in the `redirect_urls` object when calling the `attach` function. For more, see [Signing the user out](/docs/advanced/signing-the-user-out)