You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
TypeError: res.setHeader is not a function
at strategy.redirect (webpack-internal:///(rsc)/./node_modules/passport/lib/middleware/authenticate.js:322:21)
at stored (webpack-internal:///(rsc)/./node_modules/passport-oauth2/lib/strategy.js:285:22)
at NullStore.store (webpack-internal:///(rsc)/./node_modules/passport-oauth2/lib/state/null.js:3:5)
at OAuth2Strategy.authenticate (webpack-internal:///(rsc)/./node_modules/passport-oauth2/lib/strategy.js:296:38)
at attempt (webpack-internal:///(rsc)/./node_modules/passport/lib/middleware/authenticate.js:353:22)
at authenticate (webpack-internal:///(rsc)/./node_modules/passport/lib/middleware/authenticate.js:354:11)
at eval (webpack-internal:///(rsc)/./app/api/auth/[provider]/route.js:55:11)
at new Promise ()
at authenticate (webpack-internal:///(rsc)/./app/api/auth/[provider]/route.js:46:42)
at Array.eval (webpack-internal:///(rsc)/./app/api/auth/[provider]/route.js:61:28)
at next (webpack-internal:///(rsc)/./node_modules/next-connect/dist/esm/router.js:67:34)
at Array.initialize (webpack-internal:///(rsc)/./node_modules/passport/lib/middleware/initialize.js:86:9)
at Router.exec (webpack-internal:///(rsc)/./node_modules/next-connect/dist/esm/router.js:68:22)
at EdgeRouter.run (webpack-internal:///(rsc)/./node_modules/next-connect/dist/esm/edge.js:47:63)
at GET (webpack-internal:///(rsc)/./app/api/auth/[provider]/route.js:106:23)
at /home/mason/project/epubpub/nextjs/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:63257
at /home/mason/project/epubpub/nextjs/node_modules/next/dist/server/lib/trace/tracer.js:133:36
`import passport from "passport";
import { Strategy as GitHubOAuth2Strategy } from "passport-github";
import { OAuth2Strategy as GoogleOAuth2Strategy } from "passport-google-oauth";
TypeError: res.setHeader is not a function
at strategy.redirect (webpack-internal:///(rsc)/./node_modules/passport/lib/middleware/authenticate.js:322:21)
at stored (webpack-internal:///(rsc)/./node_modules/passport-oauth2/lib/strategy.js:285:22)
at NullStore.store (webpack-internal:///(rsc)/./node_modules/passport-oauth2/lib/state/null.js:3:5)
at OAuth2Strategy.authenticate (webpack-internal:///(rsc)/./node_modules/passport-oauth2/lib/strategy.js:296:38)
at attempt (webpack-internal:///(rsc)/./node_modules/passport/lib/middleware/authenticate.js:353:22)
at authenticate (webpack-internal:///(rsc)/./node_modules/passport/lib/middleware/authenticate.js:354:11)
at eval (webpack-internal:///(rsc)/./app/api/auth/[provider]/route.js:55:11)
at new Promise ()
at authenticate (webpack-internal:///(rsc)/./app/api/auth/[provider]/route.js:46:42)
at Array.eval (webpack-internal:///(rsc)/./app/api/auth/[provider]/route.js:61:28)
at next (webpack-internal:///(rsc)/./node_modules/next-connect/dist/esm/router.js:67:34)
at Array.initialize (webpack-internal:///(rsc)/./node_modules/passport/lib/middleware/initialize.js:86:9)
at Router.exec (webpack-internal:///(rsc)/./node_modules/next-connect/dist/esm/router.js:68:22)
at EdgeRouter.run (webpack-internal:///(rsc)/./node_modules/next-connect/dist/esm/edge.js:47:63)
at GET (webpack-internal:///(rsc)/./app/api/auth/[provider]/route.js:106:23)
at /home/mason/project/epubpub/nextjs/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:63257
at /home/mason/project/epubpub/nextjs/node_modules/next/dist/server/lib/trace/tracer.js:133:36
`import passport from "passport";
import { Strategy as GitHubOAuth2Strategy } from "passport-github";
import { OAuth2Strategy as GoogleOAuth2Strategy } from "passport-google-oauth";
//import api from "@/api";
const SUPPORTED_PROVIDERS = ["google", "github"];
import { NextResponse } from "next/server";
import { createEdgeRouter } from "next-connect";
passport.use(
new GitHubOAuth2Strategy(
{
clientID: process.env.GITHUB_CLIENT_ID ?? "",
clientSecret: process.env.GITHUB_CLIENT_SECRET ?? "",
callbackURL: process.env.GITHUB_CALLBACK_URL ?? "",
scope: ["user:email"],
},
(accessToken, _, profile, cb) => {
return cb(null, { accessToken, profile });
}
)
);
passport.use(
new GoogleOAuth2Strategy(
{
clientID: process.env.GOOGLE_CLIENT_ID ?? "",
clientSecret: process.env.GOOGLE_CLIENT_SECRET ?? "",
callbackURL: process.env.GOOGLE_CALLBACK_URL ?? "",
scope: "profile email",
},
(accessToken, _, profile, cb) => {
return cb(null, { accessToken, profile });
}
)
);
const authenticate = (method, req, res) =>
new Promise((resolve, reject) => {
passport.authenticate(method, { session: false }, (error, token) => {
if (error) {
reject(error);
} else {
resolve(token);
}
})(req, res);
});
const router = createEdgeRouter();
router.use(passport.initialize()).get(async (req, res) => {
const { provider } = res.params;
try {
const user = await authenticate(provider, req, res);
return NextResponse.json({ user });
} catch (error) {
console.error(error);
return NextResponse.json(error.message, { status: 401 });
}
});
export async function GET(req, ctx) {
// Validate provider
const { provider } = ctx.params;
if (typeof provider !== "string") {
return Response.json(
{
success: false,
error: "Invalid OAuth2 provider.",
},
{
status: 400,
}
);
}
if (!SUPPORTED_PROVIDERS.includes(provider)) {
return Response.json(
{
success: false,
error:
${provider} is not a supported OAuth2 provider.
,},
{
status: 400,
}
);
}
// Check if we're already logged in
// const user = await api.me(req, res);
// if (user.success && user?.payload) {
// // If User hasn't completed account creation then redirect
// if (user.payload.user?.state !== "COMPLETE") {
// res.redirect("/profile");
// return;
// }
// res.redirect("/");
// return;
// }
try {
const opts = {
session: false,
};
} catch (err) {
console.error(err);
return Response.json(
{
success: false,
error:
Failed to authenticate with ${provider}. Please try again later.
,},
{
status: 500,
}
);
}
}
`
The text was updated successfully, but these errors were encountered: