UNPKG

@dotinc/bouncer-admin

Version:
103 lines (95 loc) 2.37 kB
// src/config/backend.ts import PasswordlessNode from "supertokens-node/recipe/passwordless"; import SessionNode from "supertokens-node/recipe/session"; // src/config/appInfo.ts var appInfo = { appName: "Bouncer Admin", apiDomain: "http://localhost:3000", websiteDomain: "http://localhost:3000", apiBasePath: "/api/auth", websiteBasePath: "/auth" }; // src/config/backend.ts var backendConfig = (config = {}) => { return { framework: "express", supertokens: { connectionURI: "https://try.supertokens.com", ...config.supertokens }, appInfo: { ...appInfo, ...config.appInfo }, recipeList: [ PasswordlessNode.init({ flowType: "MAGIC_LINK", contactMethod: "EMAIL" }), SessionNode.init() ], isInServerlessEnv: true }; }; // src/config/frontend.ts import PasswordlessReact from "supertokens-auth-react/recipe/passwordless"; import SessionReact from "supertokens-auth-react/recipe/session"; var frontendConfig = (config = {}) => { return { appInfo: { ...appInfo, ...config.appInfo }, recipeList: [ PasswordlessReact.init({ contactMethod: "EMAIL" }), SessionReact.init() ] }; }; // src/common/initFrontend.ts import SuperTokens from "supertokens-auth-react"; var initFrontend = (config) => { if (typeof window !== "undefined") { SuperTokens.init(frontendConfig(config)); } }; // src/auth/AuthPage.tsx import { useEffect } from "react"; import dynamic from "next/dynamic"; import SuperTokens2 from "supertokens-auth-react"; import { redirectToAuth } from "supertokens-auth-react"; var SuperTokensComponentNoSSR = dynamic( new Promise((res) => res(SuperTokens2.getRoutingComponent)), { ssr: false } ); var AuthPage = () => { useEffect(() => { if (SuperTokens2.canHandleRoute() === false) { redirectToAuth(); } }, []); return <SuperTokensComponentNoSSR />; }; // src/auth/AuthProvider.tsx import { SuperTokensWrapper } from "supertokens-auth-react"; var AuthProvider = ({ children }) => { return <SuperTokensWrapper>{children}</SuperTokensWrapper>; }; // src/common/AppProvider.tsx var AppProvider = ({ children }) => { return <AuthProvider>{children}</AuthProvider>; }; export { AppProvider, AuthPage, AuthProvider, backendConfig, frontendConfig, initFrontend };