You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
spa_instat_tv/public/silent-refresh.html

46 lines
1.7 KiB

<!DOCTYPE html>
<html lang="en">
<head>
<title></title>
</head>
<body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/oidc-client/1.11.5/oidc-client.min.js"
integrity="sha512-pGtU1n/6GJ8fu6bjYVGIOT9Dphaw5IWPwVlqkpvVgqBxFkvdNbytUh0H8AP15NYF777P4D3XEeA/uDWFCpSQ1g=="
crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script>
new Oidc.UserManager().signinSilentCallback()
.then(() => {
const refreshToken = new URLSearchParams(document.location.search).get('refresh_token');
if (refreshToken && /iPad|iPhone|iPod/.test(navigator.userAgent)) {
const getDomain = () => {
if (! '%NODE_ENV%' || '%NODE_ENV%' === 'development') {
return 'localhost';
} else {
return '.insports.tv';
}
};
const parseJwt = (value) => {
const base64Url = value.split('.')[1];
const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
const jsonPayload = decodeURIComponent(window.atob(base64).split('').map((c) => `%${(`00${c.charCodeAt(0).toString(16)}`).slice(-2)}`).join(''));
return JSON.parse(jsonPayload);
};
const saveRefreshToken = (value) => {
const ref = parseJwt(value);
const expires = `expires=${new Date((ref.exp * 1000)).toUTCString()}`;
document.cookie = `refresh_token=${value};${expires};path=/;domain=${getDomain()};secure;SameSite=None`;
};
saveRefreshToken(refreshToken);
}
})
.catch((err) => {
console.error('OIDC: silent refresh callback error', err);
});
</script>
</body>
</html>