@dynamic-labs/sdk-react-core
Version:
A React SDK for implementing wallet web3 authentication and authorization to your website.
31 lines (28 loc) • 1.48 kB
JavaScript
'use client'
import { StorageService } from '@dynamic-labs/utils';
import { AUTH_TOKEN, AUTH_MIN_TOKEN } from '../../constants/localStorage.js';
import { DYNAMIC_AUTH_COOKIE_NAME } from '../../constants/values.js';
import { isCookieEnabled } from '../isCookieEnabled/isCookieEnabled.js';
import { storeExpiresAt } from '../storeExpiresAt/storeExpiresAt.js';
import { getProjectSettings } from '../../../store/state/projectSettings/projectSettings.js';
const storeAuthToken = ({ jwt, minifiedJwt, expiresAt, }) => {
// expiresAt is always sent back by the backend, regardless of whether jwt/minifiedJwt are sent or not
if (expiresAt !== undefined)
storeExpiresAt(expiresAt);
if (jwt && minifiedJwt) {
StorageService.setItem(AUTH_TOKEN, jwt, {
priority: ['secureStorage', 'localStorage'],
});
StorageService.setItem(AUTH_MIN_TOKEN, minifiedJwt, {
priority: ['secureStorage', 'localStorage'],
});
const projectSettings = getProjectSettings();
if (projectSettings && isCookieEnabled(projectSettings)) {
// if cookie is enabled, but the backend returns a JWT, then use JS to store the cookie
const expireDate = new Date(expiresAt * 1000).toUTCString();
const authCookie = `${DYNAMIC_AUTH_COOKIE_NAME}=${minifiedJwt}; expires=${expireDate}; path=/; SameSite=Lax`;
document.cookie = authCookie;
}
}
};
export { storeAuthToken };