1.1.3 • Published 7 months ago

@inube/auth v1.1.3

Weekly downloads
-
License
ISC
Repository
github
Last release
7 months ago

Inube Auth

This is a React and Vite component library for manage the authentication for @Inube.

Features

This library use OAuth2 for authentication and authorization. It provides the following features:

  • Login with redirect
  • Logout
  • Get access token
  • Refresh access token
  • Get user information
  • Check if user is authenticated
  • Check if user is loading
  • Check if user is expired for sign out
  • Save user information in local storage (dev) or session storage (prod)
  • Sign out in timeout
    • Reset sign out time on mouse move
    • Reset sign out time on key down
    • Reset sign out time on mouse down
    • Reset sign out time on scroll
    • Reset sign out time on touch start
    • Reset sign out time on change page
    • Reset sign out time on critical paths

Actually, this library is only compatible with 'identidad' provider.

Installation

Run the following command using npm:

npm install --save @inube/auth

Configuration

AuthProvider Props:

  • clientId: Id of client
  • clientSecret: Secret of client
  • realm: Realm of client
  • provider: Provider of client (e.g. "identidad")
  • authorizationParams: Authorization parameters
    • redirectUri: Redirect URI when authentication is successful
    • scope: Scope
  • isProduction: Is production environment, define for deciding which storage to use dev = localStorage, prod = sessionStorage
  • withSignOutTimeout: With sign out in timeout
  • signOutTime: Sign out time in milliseconds
  • redirectUrlOnTimeout: Redirect URL on timeout
  • resetSignOutMouseMove: Reset sign out on mouse move
  • resetSignOutKeyDown: Reset sign out on key down
  • resetSignOutMouseDown: Reset sign out on mouse down
  • resetSignOutScroll: Reset sign out on scroll
  • resetSignOutTouchStart: Reset sign out on touch start
  • resetSignOutChangePage: Reset sign out on change page
  • signOutCritialPaths: This routes will reset the sign out timer

Note: Save this values in env variables

Usage

import React, { useEffect } from "react";
import ReactDOM from "react-dom/client";
import { AuthProvider, useAuth } from "@inube/auth";

const CLIENT_ID = import.meta.env.VITE_AUTH_CLIENT_ID;
const CLIENT_SECRET = import.meta.env.VITE_AUTH_CLIENT_SECRET;
const REALM = import.meta.env.VITE_AUTH_REALM;
const PROVIDER = import.meta.env.VITE_AUTH_PROVIDER;
const AUTH_REDIRECT_URI = import.meta.env.VITE_AUTH_REDIRECT_URI;
const IS_PRODUCTION = import.meta.env.PROD;
const REDIRECT_URI = IS_PRODUCTION ? window.location.origin : AUTH_REDIRECT_URI;

ReactDOM.createRoot(document.getElementById("root")!).render(
  <React.StrictMode>
    <AuthProvider
      provider={PROVIDER}
      clientId={CLIENT_ID}
      clientSecret={CLIENT_SECRET}
      realm={REALM}
      authorizationParams={{ redirectUri: REDIRECT_URI, scope: [] }}
      isProduction={IS_PRODUCTION}
    >
      <App />
    </AuthProvider>
  </React.StrictMode>
);

// App component
function App() {
  const { user, loginWithRedirect, isAuthenticated, isLoading, logout } =
    useAuth();

  useEffect(() => {
    if (!isLoading && !isAuthenticated) {
      loginWithRedirect();
    }
  }, [isLoading, isAuthenticated]);

  if (!isAuthenticated) {
    return null;
  }

  return (
    <div>
      <p>Successfully logged in: {JSON.stringify(user)}</p>
      <button onClick={logout}>Logout</button>
    </div>
  );
}

Development

  • The components are developed using Typescript
  • The code is commited using Conventional Commits and releases are managed using auto by intuit.

Issues

If you got any issues while using the library, please report them as issues here

1.1.1

7 months ago

1.1.0

7 months ago

1.1.3

7 months ago

1.1.2

7 months ago

1.0.18

1 year ago

1.0.17

2 years ago

1.0.16

2 years ago

1.0.15

2 years ago

1.0.13

2 years ago

1.0.12

2 years ago

1.0.11

2 years ago

1.0.9

2 years ago

1.0.10

2 years ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago