Wildson
05/09/2023, 4:21 PMWildson
05/09/2023, 4:24 PMrp_st
05/09/2023, 4:36 PMrp_st
05/09/2023, 4:40 PMWildson
05/09/2023, 5:06 PMrp_st
05/09/2023, 5:08 PMrp_st
05/09/2023, 5:08 PMWildson
05/09/2023, 5:21 PMrp_st
05/09/2023, 5:21 PMWildson
05/09/2023, 5:23 PMrp_st
05/09/2023, 5:24 PMWildson
05/09/2023, 5:25 PMWildson
05/09/2023, 5:25 PMrp_st
05/09/2023, 5:28 PMrp_st
05/09/2023, 5:28 PMWildson
05/09/2023, 6:07 PMrp_st
05/09/2023, 6:49 PMKShivendu
05/10/2023, 7:41 AMauth_code_response
whenever the error has occurred (using Sentry)?rp_st
05/10/2023, 7:41 AMKShivendu
05/10/2023, 7:53 AMrp_st
05/10/2023, 7:53 AMWildson
05/10/2023, 2:11 PMWildson
05/10/2023, 2:12 PMrp_st
05/10/2023, 2:12 PMWildson
05/10/2023, 2:40 PMrp_st
05/10/2023, 2:52 PMWildson
05/10/2023, 4:02 PMrp_st
05/10/2023, 4:04 PMWildson
05/10/2023, 4:48 PMWildson
05/10/2023, 4:56 PMimport Router from "next/router";
import SessionReact from "supertokens-auth-react/recipe/session";
import ThirdPartyEmailPasswordReact from "supertokens-auth-react/recipe/thirdpartyemailpassword";
import { appInfo } from "./appInfo";
import { ptbr } from "./translation";
export const frontendConfig = () => {
return {
languageTranslations: {
translations: {
ptbr,
},
defaultLanguage: "ptbr",
},
appInfo,
recipeList: [
ThirdPartyEmailPasswordReact.init({
style: `
[data-supertokens~=container] {
--palette-background: 51, 51, 51;
--palette-inputBackground: 41, 41, 41;
--palette-inputBorder: 41, 41, 41;
--palette-textTitle: 255, 255, 255;
--palette-textLabel: 255, 255, 255;
--palette-textPrimary: 255, 255, 255;
--palette-error: 173, 46, 46;
--palette-textInput: 169, 169, 169;
--palette-textLink: 169, 169, 169;
--palette-primary: 232, 89, 12;
--palette-primaryBorder: 220, 77, 0;
}
[data-supertokens~=forgotPasswordLink] {
visibility: hidden;
position: absolute;
}
[data-supertokens~=headerSubtitle] {
visibility: hidden;
position: absolute;
}
`,
signInAndUpFeature: {
providers: [ThirdPartyEmailPasswordReact.Google.init()],
},
}),
SessionReact.init(),
],
windowHandler: (oI: any) => {
return {
...oI,
location: {
...oI.location,
setHref: (href: string) => {
Router.push(href);
},
},
};
},
};
};
rp_st
05/10/2023, 4:57 PMWildson
05/10/2023, 4:59 PMrp_st
05/10/2023, 5:00 PMrp_st
05/10/2023, 5:00 PMWildson
05/10/2023, 5:01 PMrp_st
05/10/2023, 5:01 PMrp_st
05/10/2023, 5:03 PMWildson
05/10/2023, 5:16 PMrp_st
05/10/2023, 5:17 PMWildson
05/10/2023, 5:17 PMrp_st
05/10/2023, 5:17 PMrp_st
05/10/2023, 5:18 PMWildson
05/10/2023, 5:21 PMimport { Request, Response } from "express";
import { NextApiRequest, NextApiResponse } from "next";
import NextCors from "nextjs-cors";
import supertokens from "supertokens-node";
import { middleware } from "supertokens-node/framework/express";
import { superTokensNextWrapper } from "supertokens-node/nextjs";
import { backendConfig } from "../../../config/backendConfig";
supertokens.init(backendConfig());
const websiteDomain = process.env.NEXT_PUBLIC_APP_URL || "http://localhost:3000";
export default async function superTokens(req: NextApiRequest & Request, res: NextApiResponse & Response) {
// NOTE: We need CORS only if we are querying the APIs from a different origin
await NextCors(req, res, {
methods: ["GET", "HEAD", "PUT", "PATCH", "POST", "DELETE"],
origin: websiteDomain,
credentials: true,
allowedHeaders: ["content-type", ...supertokens.getAllCORSHeaders()],
});
await superTokensNextWrapper(
async (next) => {
// This is needed for production deployments with Vercel
res.setHeader("Cache-Control", "no-cache, no-store, max-age=0, must-revalidate");
await middleware()(req, res, next);
},
req,
res
);
if (!res.writableEnded) {
res.status(404).send("Not found");
}
}
Wildson
05/10/2023, 5:24 PMrp_st
05/10/2023, 5:24 PMWildson
05/10/2023, 5:25 PMrp_st
05/10/2023, 5:26 PMrp_st
05/10/2023, 5:26 PMWildson
05/10/2023, 5:26 PM`
if (typeof window !== "undefined") {
SuperTokensReact.init(frontendConfig());
}
function App({ Component, pageProps }: AppProps<{ fromSupertokens: string }>) {
const [opened, setOpened] = useState(false);
const { width } = useViewportSize();
const router = useRouter();
useEffect(() => {
async function doRefresh() {
if (pageProps.fromSupertokens === "needs-refresh") {
if (await Session.attemptRefreshingSession()) {
location.reload();
} else {
redirectToAuth();
}
}
}
doRefresh();
}, [pageProps.fromSupertokens]);
if (pageProps.fromSupertokens === "needs-refresh") {
return null;
}
return (
<>
<Head>
<title>Explorernet</title>
<meta name="viewport" content="minimum-scale=1, initial-scale=1, width=device-width" />
</Head>
<AppProviders>
{router.pathname.startsWith("/auth") && <Component {...pageProps} key={router.asPath} />}
{!router.pathname.startsWith("/auth") && (
<AppShell
fixed
navbarOffsetBreakpoint="sm"
navbar={
width < 769 && width > 0 ? <NavbarMobile opened={opened} setOpened={setOpened} /> : <CustomNavbar />
}
styles={(theme) => ({
main: {
backgroundColor: theme.colorScheme == "dark" ? theme.colors.dark[8] : theme.colors.gray[0],
},
})}
header={width < 769 && width > 0 ? <CustomHeader opened={opened} setOpened={setOpened} /> : undefined}
>
<SessionAuth>
<RouterTransition />
<Component {...pageProps} key={router.asPath} />
</SessionAuth>
</AppShell>
)}
</AppProviders>
</>
);
}
export default App;
rp_st
05/10/2023, 5:27 PMfrontendConfig()
Wildson
05/10/2023, 5:28 PMimport Router from "next/router";
import SessionReact from "supertokens-auth-react/recipe/session";
import ThirdPartyEmailPasswordReact from "supertokens-auth-react/recipe/thirdpartyemailpassword";
import { appInfo } from "./appInfo";
import { ptbr } from "./translation";
export const frontendConfig = () => {
return {
languageTranslations: {
translations: {
ptbr,
},
defaultLanguage: "ptbr",
},
appInfo,
recipeList: [
ThirdPartyEmailPasswordReact.init({
style: `
[data-supertokens~=container] {
--palette-background: 51, 51, 51;
--palette-inputBackground: 41, 41, 41;
--palette-inputBorder: 41, 41, 41;
--palette-textTitle: 255, 255, 255;
--palette-textLabel: 255, 255, 255;
--palette-textPrimary: 255, 255, 255;
--palette-error: 173, 46, 46;
--palette-textInput: 169, 169, 169;
--palette-textLink: 169, 169, 169;
--palette-primary: 232, 89, 12;
--palette-primaryBorder: 220, 77, 0;
}
[data-supertokens~=forgotPasswordLink] {
visibility: hidden;
position: absolute;
}
[data-supertokens~=headerSubtitle] {
visibility: hidden;
position: absolute;
}
`,
signInAndUpFeature: {
providers: [ThirdPartyEmailPasswordReact.Google.init()],
},
}),
SessionReact.init(),
],
windowHandler: (oI: any) => {
return {
...oI,
location: {
...oI.location,
setHref: (href: string) => {
Router.push(href);
},
},
};
},
};
};
rp_st
05/10/2023, 5:30 PMrp_st
05/10/2023, 5:30 PMWildson
05/10/2023, 5:31 PMrp_st
05/10/2023, 5:31 PMWildson
05/10/2023, 5:31 PMrp_st
05/10/2023, 5:36 PMWildson
05/10/2023, 5:38 PMrp_st
05/10/2023, 5:38 PMWildson
05/10/2023, 5:39 PMrp_st
05/10/2023, 5:39 PMrp_st
05/10/2023, 5:39 PMWildson
05/10/2023, 5:40 PMWildson
05/10/2023, 5:40 PMrp_st
05/10/2023, 5:40 PMWildson
05/10/2023, 5:40 PMWildson
05/10/2023, 5:41 PMrp_st
05/10/2023, 5:41 PMrp_st
05/10/2023, 5:41 PMWildson
05/10/2023, 5:42 PMWildson
05/10/2023, 5:42 PMrp_st
05/10/2023, 5:44 PMWildson
05/10/2023, 5:45 PMrp_st
05/10/2023, 5:45 PMrp_st
05/10/2023, 5:46 PMWildson
05/10/2023, 5:48 PMrp_st
05/10/2023, 5:49 PMWildson
05/10/2023, 5:50 PMWildson
05/10/2023, 5:50 PMrp_st
05/10/2023, 5:50 PMWildson
05/10/2023, 5:50 PMWildson
05/10/2023, 5:51 PMrp_st
05/10/2023, 5:52 PMporcellus
05/10/2023, 9:56 PMporcellus
05/10/2023, 9:58 PMWildson
05/11/2023, 12:14 PM