@applica-software-guru/iam-client v1.1.73
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-clientPuoi 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
LocalStorageche non è altro che un wrapper diwindow.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;9 months ago
1 year ago
1 year ago
1 year ago
1 year ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago