@applica-software-guru/iam-client
TypeScript icon, indicating that this package has built-in type declarations

1.1.65 • Public • Published

Libreria per l'accesso ai servizi REST IAM di Applica.

Info Dettagli
Ultima versione 1.1.*
Autore Roberto Conte Rosito
Repository https://bitbucket.org/applicaguru/iam-client
Pipeline https://bitbucket.org/applicaguru/iam-client/pipelines

Prefazione

La libreria @applica-software-guru/iam-client è un client REST che consente l'integrazione di servizi IAM Applica. La sua implementazione si basa sui principi e le linee guida definite all'interno del progetto React-Admin.

Come si usa

La libreria può essere utilizzata in associazione a react-admin come authProvider (scopo per cui è nata) oppure direttamente come strumento per eseguire il login, aggiornare i token di autenticazione e, in generale, mantenere uno stato di sessione valido per l'utente potendo usufruire di tutti i metodi esposti da un provider IAM Applica.

Per installare la libreria:

npm i @applica-software-guru/iam-client

Puoi utilizzarla all'interno di un progetto react-admin come authProvider seguendo la guida ufficiale.

Configurazione

Puoi configurare e rendere persistente un'istanza di authProvider utilizzando il metodo useAuthProvider:

const apiUrl = 'http://localhost:8080/api';
const authProvider = createAuthProvider({ apiUrl });

Un eventuale (e quasi sicuro) dataProvider che dovrai configurare potrà usufruire di una serie di metodi tecnici, esposti da authProvider, che gli consentiranno di comunicare in sicurezza con i servizi IAM Applica.

const getToken = async () => await authProvider.getToken();
const getHeaders = async () => await authProvider.getHeaders();
const dataProvider = createDataProvider({ apiUrl, getToken, getHeaders });

Applica Auth Provider

Per utilizzare il provider con le firme di applica puoi utilizzare useApplicaAuthProvider al posto di useAuthProvider di react-admin:

const authProvider = useApplicaAuthProvider({ apiUrl });

Login

Per effettuare il login puoi utilizzare il metodo login:

const login = await authProvider.login({
  username: 'admin',
  password: 'admin'
});

Logout

Per effettuare il logout puoi utilizzare il metodo logout:

await authProvider.logout();

Check Auth

Per verificare che il token autorizzativo attuale sia valido e per aggiornarlo se necessario puoi utilizzare il metodo checkAuth:

const checkAuth = await authProvider.checkAuth();

Questo metodo provvederà a rinnovare il token autorizzativo.

Get Permissions

Per ottenere i permessi dell'utente puoi utilizzare il metodo getPermissions:

const getPermissions = await authProvider.getPermissions();

Questo metodo restituisce un array di permessi, ogni permesso è una stringa che segue la formattazione entity:permission, per esempio:

  • users:save
  • users:delete
  • users:new
  • users:edit
  • users:list

Get Roles

Per ottenere i ruoli dell'utente puoi utilizzare il metodo getRoles:

const getRoles = await authProvider.getRoles();

Questo metodo restituisce un array di ruoli, ogni ruolo è una stringa.

Get Identity

Per ottenere l'identità dell'utente puoi utilizzare il metodo getIdentity:

const identity = await authProvider.getIdentity();

Impersonate

Per impersonare un utente puoi utilizzare il metodo impersonate:

const user = await authProvider.impersonate('<id>');
const isImpersonating = await authProvider.isImpersonating();
await authProvider.stopImpersonating();

Storage

Puoi utilizzare uno storage differente dal localStorage presente all'interno del browser (per esempio se devi utilizzare questa libreria all'interno di un applicativo react-admin), per farlo devi passare un'istanza di Storage al metodo useAuthProvider:

import { LocalStorage } from '@applica-software-guru/iam-client';
const storage = new LocalStorage();
const authProvider = useAuthProvider({ apiUrl, storage });

Se utilizzi la libreria sul web puoi utilizzare l'implementazione LocalStorage che non è altro che un wrapper di window.localStorage.

Di seguito un esempio di implementazione di MemoryStorage:

import { StorageInterface } from '@applica-software-guru/iam-client';

/**
 * Implementazione di StorageInterface che utilizza un oggetto in memoria.
 */
class MemoryStorage implements StorageInterface {
  storage: any;

  constructor() {
    this.storage = {};
  }

  getItem(key: string): Promise<string> {
    if (typeof this.storage[key] === 'undefined') {
      return Promise.resolve('');
    }
    return Promise.resolve(this.storage[key]);
  }
  setItem(key: string, value: string): Promise<void> {
    this.storage[key] = value;
    return Promise.resolve();
  }
  removeItem(key: string): Promise<void> {
    delete this.storage[key];
    return Promise.resolve();
  }
}

export default MemoryStorage;

Readme

Keywords

Package Sidebar

Install

npm i @applica-software-guru/iam-client

Weekly Downloads

14

Version

1.1.65

License

MIT

Unpacked Size

1.4 MB

Total Files

60

Last publish

Collaborators

  • giuseppe.disimino
  • mcolucci_applica
  • roberto.conterosito
  • bruno.fortunato