Source identity
| Field | Recorded value |
|---|---|
| Source type | GitHub source |
| Original record | Janady13/llms-txt-hub / apps/web/components/csrf-provider.tsx |
| Date | Not specified in source |
| Repository | Janady13/llms-txt-hub |
| Revision | e0f4bf978d4df168369c7601d9c5f5ea89e84377 |
| Branch | main |
| Path or archive member | apps/web/components/csrf-provider.tsx |
| Original SHA-256 | 0792498d6c7901e0d49f1dffcb251ea4df66e7040cef5aab73b169c93ab8b078 |
| Git blob SHA | bf997b4f0036db22f6d35f402f4f09a218bdc27c |
| Reading-copy SHA-256 | 0792498d6c7901e0d49f1dffcb251ea4df66e7040cef5aab73b169c93ab8b078 |
Recovered source transcript
Download complete source text ↓49 lines · 1.4 KB
'use client'
import { logger } from '@thedaviddias/logging'
import { useEffect } from 'react'
/**
* CSRF Provider component that initializes CSRF token on the client side
*
* @returns null - This component doesn't render anything
*/
export function CSRFProvider() {
useEffect(() => {
/**
* Initialize CSRF token by fetching from API and setting meta tag
*/
const initCSRF = async () => {
try {
const response = await fetch('/api/csrf', { method: 'GET' })
if (response.ok) {
const data = await response.json()
if (data.token) {
// Create or update meta tag
let metaTag = document.querySelector('meta[name="csrf-token"]')
if (!metaTag || !(metaTag instanceof HTMLMetaElement)) {
metaTag = document.createElement('meta')
if (metaTag instanceof HTMLMetaElement) {
metaTag.name = 'csrf-token'
document.head.appendChild(metaTag)
}
}
if (metaTag instanceof HTMLMetaElement) {
metaTag.content = data.token
}
}
}
} catch (error) {
logger.error(error instanceof Error ? error : new Error(String(error)), {
data: error,
tags: { type: 'component', component: 'csrf-provider' }
})
}
}
initCSRF()
}, [])
return null
}