@sanity/sdk
Version:
52 lines (48 loc) • 1.55 kB
text/typescript
import {type ClientConfig, type SanityClient} from '@sanity/client'
import {getTokenFromStorage} from './utils'
/**
* Attempts to check for cookie auth by making a withCredentials request to the users endpoint.
* @param projectId - The project ID to check for cookie auth.
* @param clientFactory - A factory function that creates a Sanity client.
* @returns True if the user is authenticated, false otherwise.
* @internal
*/
export async function checkForCookieAuth(
projectId: string | undefined,
clientFactory: (config: ClientConfig) => SanityClient,
): Promise<boolean> {
if (!projectId) return false
try {
const client = clientFactory({
projectId,
useCdn: false,
})
const user = await client.request({
uri: '/users/me',
withCredentials: true,
tag: 'users.get-current',
})
return typeof user?.id === 'string'
} catch {
return false
}
}
/**
* Attempts to retrieve a studio token from local storage.
* @param storageArea - The storage area to retrieve the token from.
* @param projectId - The project ID to retrieve the token for.
* @returns The studio token or null if it does not exist.
* @internal
*/
export function getStudioTokenFromLocalStorage(
storageArea: Storage | undefined,
projectId: string | undefined,
): string | null {
if (!storageArea || !projectId) return null
const studioStorageKey = `__studio_auth_token_${projectId}`
const token = getTokenFromStorage(storageArea, studioStorageKey)
if (token) {
return token
}
return null
}