@datalayer/core
Version:
**Datalayer Core**
77 lines (76 loc) • 2.18 kB
JavaScript
/*
* Copyright (c) 2023-2025 Datalayer, Inc.
* Distributed under the terms of the Modified BSD License.
*/
import jwt_decode from 'jwt-decode';
import { getCookie } from '../../utils';
import { ANONYMOUS_USER, ANONYMOUS_USER_TOKEN } from '../../models';
export const JWT_DATALAYER_ISSUER = 'https://id.datalayer.run';
export const DATALAYER_IAM_USER_KEY = '@datalayer/iam:user';
export const DATALAYER_IAM_TOKEN_KEY = '@datalayer/iam:token';
export const JWT_REFRESH_TOKEN_COOKIE_NAME = 'refresh_token';
/**
* Return the user from the local storage.
*/
export const getStoredUser = () => {
const user = window.localStorage.getItem(DATALAYER_IAM_USER_KEY);
if (user) {
try {
const u = JSON.parse(user);
u.joinDate = new Date(u.joinDate);
return u;
}
catch (e) {
return ANONYMOUS_USER;
}
}
return ANONYMOUS_USER;
};
/**
* Set the user in the local storage.
*/
export const storeUser = (user) => {
if (user) {
window.localStorage.setItem(DATALAYER_IAM_USER_KEY, JSON.stringify(user));
}
else {
window.localStorage.removeItem(DATALAYER_IAM_USER_KEY);
}
};
/**
* Return the IAM token from the local storage.
*/
export const getStoredToken = () => {
const token = window.localStorage.getItem(DATALAYER_IAM_TOKEN_KEY);
if (token) {
return token;
}
return ANONYMOUS_USER_TOKEN;
};
/**
* Set the IAM token in the local storage.
*/
export const storeToken = (token) => {
if (token) {
if (token !== ANONYMOUS_USER_TOKEN) {
try {
const jwt = jwt_decode(token);
console.debug('JWT Token', jwt);
}
catch (error) {
console.error("Error while decoding JWT Token.", error);
throw error;
}
}
localStorage.setItem(DATALAYER_IAM_TOKEN_KEY, token);
}
else {
window.localStorage.removeItem(DATALAYER_IAM_TOKEN_KEY);
}
};
/**
* Load a JWT refresh token stored in a cookie.
*/
export function loadRefreshTokenFromCookie() {
return getCookie(JWT_REFRESH_TOKEN_COOKIE_NAME);
}