UNPKG

scrivito

Version:

Scrivito is a professional, yet easy to use SaaS Enterprise Content Management Service, built for digital agencies and medium to large businesses. It is completely maintenance-free, cost-effective, and has unprecedented performance and security.

48 lines (36 loc) 1.23 kB
import { AuthHandler } from 'scrivito_sdk/app_support/auth_handler'; import { changeLoggedInState } from 'scrivito_sdk/app_support/logged_in_state'; import { getOfflineMode } from 'scrivito_sdk/app_support/offline_mode'; import { getUserInfo } from 'scrivito_sdk/app_support/user_info'; import { startPollingLoggedInUser } from 'scrivito_sdk/app_support/user_logged_in_status'; import { wait } from 'scrivito_sdk/common'; import { load } from 'scrivito_sdk/loadable'; export const loggedInVisitorAuthHandler: AuthHandler = { getUserData() { const userInfo = getUserInfo(); if (!userInfo) return; const { sub: id, name, email, picture } = userInfo; return { id, name, email, picture: picture || null }; }, isUserLoggedIn() { verifyUserIsLoggedIn(); if (!getOfflineMode()) startPollingLoggedInUser(); return true; }, ensureUserIsLoggedIn() { // nothing to do, we are logged in already }, iamTokenFetcher() { return undefined; }, loginHandler() { return 'redirect'; }, }; async function verifyUserIsLoggedIn() { const user = await Promise.race([ load(loggedInVisitorAuthHandler.getUserData), wait(30), ]); if (!user) changeLoggedInState(false); }