Files
accounted/lib/recapt.ts
T
Mattsson a9aff5a120 Bug/template and sandbox (#589)
* Enhance booking template functionality and add sandbox extraction checks

* Implement Recapt integration for feedback submission and user identification

* Add Recapt identification component and bank sync status chip; update crontab entries

* Update .gitignore to ignore the entire scripts directory

* Refactor Recapt integration: add loader component, update privacy policy, and enhance bank sync status messages

* Fix .gitignore to correctly ignore the scripts directory
2026-05-28 15:43:48 +02:00

32 lines
1.2 KiB
TypeScript

// Recapt's identify SDK keeps the last-known uid in memory and in
// localStorage. Passing `uid: undefined` is not a documented logout
// signal — on some SDK versions it's coerced to the previous value.
// We send an explicit empty-string uid (the SDK's "anonymous" marker),
// then clear any persisted Recapt keys from localStorage so the next
// pageload doesn't re-identify the logged-out user from cache.
export function clearRecaptIdentity(): void {
if (typeof window === 'undefined') return
try {
if (typeof window.recapt === 'function') {
window.recapt('identify', {
uid: '',
email: undefined,
nickname: undefined,
})
}
// Defense-in-depth: wipe any Recapt-namespaced storage on logout so
// a shared device cannot resurrect the previous user's identity on
// the next page load.
if (typeof window.localStorage !== 'undefined') {
for (let i = window.localStorage.length - 1; i >= 0; i--) {
const key = window.localStorage.key(i)
if (key && (key.startsWith('recapt') || key.startsWith('glimt'))) {
window.localStorage.removeItem(key)
}
}
}
} catch {
// best-effort — we're already in a logout flow
}
}