Files
hemhub-web/src/pages/AuthCallbackPage.tsx
Urban Modig 16c488c3c4
Some checks failed
continuous-integration/drone/push Build is failing
fixed eslint
2025-10-14 21:24:50 +02:00

39 lines
1.2 KiB
TypeScript

// src/pages/AuthCallbackPage.tsx
import { useEffect, useRef } from 'react'
import { useNavigate } from 'react-router-dom'
import { userManager } from 'auth/oidc' // behåll alias/relativt enligt ditt projekt
// Hjälpare: plocka ut returnTo från okänt state
function pickReturnTo(state: unknown): string | undefined {
if (state && typeof state === 'object' && 'returnTo' in state) {
const v = (state as Record<string, unknown>).returnTo
return typeof v === 'string' ? v : undefined
}
return undefined
}
export default function AuthCallbackPage() {
const navigate = useNavigate()
const handled = useRef(false)
useEffect(() => {
if (handled.current) return
handled.current = true
;(async () => {
try {
const res = await userManager.signinRedirectCallback()
const target = pickReturnTo(res?.state) ?? '/'
// Städa bort ?code&state ur URL:en:
window.history.replaceState({}, '', target)
navigate(target, { replace: true })
} catch (err) {
console.error('signinRedirectCallback failed:', err)
navigate('/', { replace: true })
}
})()
}, [navigate])
return <p>Completing sign-in</p>
}