RCognito

RCognito is an R package designed to simplify interaction with Amazon Cognito services through a user-friendly API wrapper. Seamlessly authenticate users, manage user pools, and perform common Cognito operations in R. Empower your R applications with secure and scalable identity management using Rcognito.

Installation

You can install the RCognito package directly from GitHub using the remotes package:

# Install remotes package if not already installed
install.packages("remotes")

# Install RCognito from GitHub
remotes::install_github("SanjayShetty01/RCognito")

Setup AWS Credentials

Before using the RCognito package, make sure to set your AWS credentials. You can do this in either of the following ways:

Method 1: Set Credentials in .Renviron File

Create or edit the .Renviron file in your R home directory and add the following:

AWS_ACCESS_KEY_ID="your-access-key-id"
AWS_SECRET_ACCESS_KEY="your-secret-access-key"
AWS_REGION="your-region"

Method 2: Use Sys.setenv() Function

Alternatively, you can set the AWS credentials programmatically using the Sys.setenv() function in your R script or session:

# Set AWS credentials
Sys.setenv(AWS_ACCESS_KEY_ID = "your-access-key-id")
Sys.setenv(AWS_SECRET_ACCESS_KEY = "your-secret-access-key")
Sys.setenv(AWS_REGION = "your-region")

Usage

1. Sign Up a New User

The sign_up_user function allows you to sign up a new user in AWS Cognito. It accepts the client_id, email, username, and password parameters.

library(Rcognito)

# Sign up a new user
sign_up_user(
  client_id = "your-client-id",
  email = "user@example.com",
  username = "johndoe",
  password = "password123"
)

Arguments:


2. Confirm User Sign-Up

Once a user has signed up, you need to confirm their sign-up using the verification code sent to their email. The confirm_sign_up_user function helps with this.

# Confirm user sign-up
confirm_sign_up_user(
  client_id = "your-client-id",
  userpool = "your-userpool-id",
  username = "johndoe",
  verification_code = "123456"
)

Arguments:


3. Sign In a User

Once a user is confirmed, they can sign in using their username and password with the sign_in function.

# Sign in a user
user_info <- sign_in(
  client_id = "your-client-id",
  username = "johndoe",
  password = "password123"
)

# View user information
print(user_info)

Arguments:


4. Change User Password

Use the change_password function to change a user’s password after they are authenticated.

# Change user password
change_password(
  old_password = "old-password", 
  new_password = "new-password", 
  token = "user-access-token"
)

Arguments:


5. Forgot Password Request

If a user forgets their password, use the forgot_password function to initiate the password reset process.

# Initiate forgot password request
forgot_password(
  client_id = "your-client-id", 
  username = "johndoe"
)

Arguments:


6. Confirm Forgot Password

After receiving a confirmation code, use the confirm_forgot_password function to set a new password.

# Confirm forgot password with new password and confirmation code
confirm_forgot_password(
  client_id = "your-client-id", 
  username = "johndoe", 
  confirmation_code = "confirmation-code", 
  new_password = "new-password"
)

Arguments:

Use Cases for RCognito

1. Authentication for Shiny Applications

RCognito allows you to integrate AWS Cognito for user authentication in Shiny applications. It enables secure user sign-up, sign-in, password management and session management, making restricting access to sensitive features based on authenticated user roles easier.


2. Securing Plumber API Endpoints

RCognito can be used to secure API endpoints in a Plumber service by validating AWS Cognito authentication tokens. This ensures that only authorized users can access specific API endpoints and perform actions that require authentication.


3. Integrating Cognito Authentication with R Scripts in Backend

When using R scripts for backend operations (e.g., data analysis, API interaction), RCognito facilitates secure authentication by verifying user credentials before allowing access to sensitive tasks or data.


License

This project is licensed under the MIT License - see the LICENSE file for details.