- Install supertokens-auth-react, supertokens-node, supertokens-web-js - Create frontend and backend SuperTokens configuration - Add API route handler for auth endpoints - Add SuperTokensProvider wrapper in root layout - Create new auth component with SuperTokens UI - Configure Google and GitHub OAuth providers - Ready for SuperTokens core deployment Co-authored-by: Cursor <cursoragent@cursor.com>
50 lines
1.5 KiB
TypeScript
50 lines
1.5 KiB
TypeScript
import ThirdPartyEmailPasswordNode from "supertokens-node/recipe/thirdpartyemailpassword";
|
|
import SessionNode from "supertokens-node/recipe/session";
|
|
import { TypeInput } from "supertokens-node/types";
|
|
import { AppInfoUserInput } from "supertokens-node/types";
|
|
|
|
const appInfo: AppInfoUserInput = {
|
|
appName: "Vib'n",
|
|
apiDomain: process.env.NEXT_PUBLIC_APP_URL || "https://app.vibnai.com",
|
|
websiteDomain: process.env.NEXT_PUBLIC_APP_URL || "https://app.vibnai.com",
|
|
apiBasePath: "/api/auth",
|
|
websiteBasePath: "/auth",
|
|
};
|
|
|
|
export const backendConfig = (): TypeInput => {
|
|
return {
|
|
framework: "custom",
|
|
supertokens: {
|
|
connectionURI: process.env.SUPERTOKENS_CONNECTION_URI || "https://auth.vibnai.com",
|
|
apiKey: process.env.SUPERTOKENS_API_KEY,
|
|
},
|
|
appInfo,
|
|
recipeList: [
|
|
ThirdPartyEmailPasswordNode.init({
|
|
providers: [
|
|
{
|
|
config: {
|
|
thirdPartyId: "google",
|
|
clients: [{
|
|
clientId: process.env.GOOGLE_CLIENT_ID || "",
|
|
clientSecret: process.env.GOOGLE_CLIENT_SECRET || "",
|
|
}],
|
|
},
|
|
},
|
|
{
|
|
config: {
|
|
thirdPartyId: "github",
|
|
clients: [{
|
|
clientId: process.env.GITHUB_CLIENT_ID || "",
|
|
clientSecret: process.env.GITHUB_CLIENT_SECRET || "",
|
|
}],
|
|
},
|
|
},
|
|
],
|
|
}),
|
|
SessionNode.init(),
|
|
],
|
|
isInServerlessEnv: true,
|
|
};
|
|
};
|