@c8y/client
Version:
Client application programming interface to access the Cumulocity IoT-Platform REST services.
49 lines • 1.89 kB
JavaScript
import { BearerAuth } from './BearerAuth.js';
export class BearerAuthFromSessionStorage extends BearerAuth {
static removeEntriesFromSessionStorage() {
sessionStorage.removeItem(BearerAuthFromSessionStorage.sessionStorageKey);
sessionStorage.removeItem(BearerAuthFromSessionStorage.sessionStorageKeyToKeepToken);
}
constructor(throwIfNoTokenPresent = true) {
super();
const token = this.getToken();
if (!token && throwIfNoTokenPresent) {
throw new Error('No token present in session storage');
}
}
updateCredentials({ token }) {
if (!token) {
return;
}
super.updateCredentials({ token });
return;
}
logout() {
return super.logout().finally(() => {
BearerAuthFromSessionStorage.removeEntriesFromSessionStorage();
});
}
getToken() {
const token = sessionStorage.getItem(BearerAuthFromSessionStorage.sessionStorageKey);
if (token) {
const shouldKeepToken = sessionStorage.getItem(BearerAuthFromSessionStorage.sessionStorageKeyToKeepToken) ===
'true';
if (!shouldKeepToken) {
sessionStorage.removeItem(BearerAuthFromSessionStorage.sessionStorageKey);
}
this.updateCredentials({ token });
return token;
}
return super.getToken();
}
}
/**
* Key for the session storage used to retrieve the bearer token from.
*/
BearerAuthFromSessionStorage.sessionStorageKey = 'bearerAuthToken';
/**
* If the session storage key 'bearerAuthTokenKeep' is set to true, the token will be kept in session storage after it was found.
* Allows you to still refresh the page.
*/
BearerAuthFromSessionStorage.sessionStorageKeyToKeepToken = `bearerAuthTokenKeep`;
//# sourceMappingURL=BearerAuthFromSessionStorage.js.map