SDK
Packages
Account

Account SDK

The @sdk/account library simplifies user account management within your application, offering functionalities to sign up new users, manage user account data, and enforce access management based on user roles.

Features

  • User Signup: Streamline the process of creating new user accounts.
  • Account Data Management: Provides a framework for updating and maintaining user account information.
  • Role-Based Access Management: Enforce access controls within your application based on user roles.

Note: For signing in users and handling identities, please use the @sdk/auth library.

Installation

To install this package, you need to have access to the private @sdk npm scope.

To install the library, run the following command in your project directory:

npm install @sdk/account

This command adds the necessary package to your project, allowing you to integrate advanced account management features.

Using with Vanilla JavaScript/TypeScript

Here's how to set up and use the AccountService for managing user accounts in a Vanilla JavaScript or TypeScript project:

import { Account, AccountService, UserMapper, CompanyAccountMapper } from '@sdk/account';
import config from './myConfig'; // Of type Config.Config from @sdk/config
import authService from './myAuthService'; // Of type Auth.AuthserviceInterface from @sdk/auth
import connectClient from './myConnectClient'; // Of type Connect.ConnectClientInterface from @sdk/connect
 
// Initialize the AccountService with necessary dependencies
const accountService = new AccountService(
  new UserMapper(config, new CompanyAccountMapper()),
  authService,
  connectClient
);
 
// Retrieve the current user's account information
const currentUser = await accountService.getCurrentUser();
 
// Check if the current user is authenticated
if (Account.isAuthenticatedUser(currentUser)) {
  // Execute actions for authenticated users
}

Integration with React

To integrate account management with your React application, first, install the React-specific package:

npm install @sdk/account-react react react-dom

Then, wrap your app with the AccountProvider to make account services accessible throughout your component tree:

import { AccountProvider } from '@sdk/account-react';
import accountService from './myAccountService'; // Import your account service instance
 
function App() {
  return (
    <AccountProvider accountService={accountService}>
      <Component />
    </AccountProvider>
  );
}
 
function Component() {
  const { currentUser, accountService } = useAccount();
  // Now you can handle the current user and account service as needed
}

Enforcing Access Restrictions in React

The library provides React components to enforce access restrictions based on authentication status and user roles:

Restrict Access to Authenticated Users

import { AccessRestriction } from '@sdk/account-react';
 
function AccessRestrictedPage() {
  return (
    <AccessRestriction
      requiresAuthenticatedUser
      requiresOneAccountRoleOf={['ACCOUNT_ADMIN']}
      onUnauthorized={reason => {
        if (reason === 'UNAUTHENTICATED') {
          redirectToAuthenticationPage('/login');
        } else {
          router.push('/');
        }
      }}
    >
      <SensitivePage />
    </AccessRestriction>
  );
}

Restrict Access to Anonymous Users

import { AnonymousRequired } from '@sdk/account-react';
 
function AnonymousPage() {
  return (
    <AnonymousRequired onAuthorized={() => router.redirect('/dashboard')}>
      <PublicOnlyPage />
    </AnonymousRequired>
  );
}