@dotinc/bouncer-admin
Version:
Bouncer Admin UI
103 lines (95 loc) • 2.37 kB
JavaScript
// 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
};