UNPKG

@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
'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 };