Skip to content

Commit 7cec7ff

Browse files
add api/webhook to public routes
1 parent ce1d224 commit 7cec7ff

File tree

4 files changed

+55
-16
lines changed

4 files changed

+55
-16
lines changed

app/api/webhook/route.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,10 @@ export async function POST(req: Request) {
5353

5454
// Do something with the payload
5555
// For this guide, you simply log the payload to the console
56-
const { id } = evt.data;
5756
const eventType = evt.type;
5857

58+
console.log({ eventType });
59+
5960
if (eventType === "user.created") {
6061
const { id, email_addresses, image_url, username, first_name, last_name } =
6162
evt.data;

app/layout.tsx

+1-7
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,4 @@
1-
import {
2-
ClerkProvider,
3-
SignInButton,
4-
SignedIn,
5-
SignedOut,
6-
UserButton,
7-
} from "@clerk/nextjs";
1+
import { ClerkProvider } from "@clerk/nextjs";
82
import "./globals.css";
93
import { Inter, Space_Grotesk } from "next/font/google";
104
import type { Metadata } from "next";

lib/actions/user.action.ts

+16-4
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@ export async function getUserById(params: any) {
2828
export async function createUser(userData: CreateUserParams) {
2929
try {
3030
connectToDatabase();
31+
3132
const newUser = await User.create(userData);
33+
3234
return newUser;
3335
} catch (error) {
3436
console.log(error);
@@ -42,7 +44,10 @@ export async function updateUser(params: UpdateUserParams) {
4244

4345
const { clerkId, updateData, path } = params;
4446

45-
await User.findOneAndUpdate({ clerkId }, updateData, { new: true });
47+
await User.findOneAndUpdate({ clerkId }, updateData, {
48+
new: true,
49+
});
50+
4651
revalidatePath(path);
4752
} catch (error) {
4853
console.log(error);
@@ -62,12 +67,19 @@ export async function deleteUser(params: DeleteUserParams) {
6267
throw new Error("User not found");
6368
}
6469

65-
const userQuestionIds = await Question.find({ author: user._id }).distinct(
66-
"_id"
67-
);
70+
// Delete user from database
71+
// and questions, answers, comments, etc.
72+
73+
// get user question ids
74+
// const userQuestionIds = await Question.find({ author: user._id}).distinct('_id');
75+
76+
// delete user questions
6877
await Question.deleteMany({ author: user._id });
6978

79+
// TODO: delete user answers, comments, etc.
80+
7081
const deletedUser = await User.findByIdAndDelete(user._id);
82+
7183
return deletedUser;
7284
} catch (error) {
7385
console.log(error);

middleware.ts

+36-4
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,51 @@
1+
// import { clerkMiddleware, createRouteMatcher } from "@clerk/nextjs/server";
2+
3+
// const isPublicRoute = createRouteMatcher(["/sign-in(.*)", "/sign-up(.*)"]);
4+
5+
// export default clerkMiddleware((auth, request) => {
6+
// const { pathname } = new URL(request.url);
7+
// if (pathname !== "/" && !isPublicRoute(request)) {
8+
// auth().protect();
9+
// }
10+
// });
11+
12+
// export const config = {
13+
// matcher: [
14+
// "/((?!_next|[^?]*\\.(?:html?|css|js(?!on)|jpe?g|webp|png|gif|svg|ttf|woff2?|ico|csv|docx?|xlsx?|zip|webmanifest)).*)",
15+
// "/(api|trpc)(.*)",
16+
// ],
17+
// };
118
import { clerkMiddleware, createRouteMatcher } from "@clerk/nextjs/server";
219

3-
const isPublicRoute = createRouteMatcher(["/sign-in(.*)", "/sign-up(.*)"]);
20+
const isPublicRoute = createRouteMatcher([
21+
"/",
22+
"/api/webhook",
23+
"/question(.*)",
24+
"/tags(.*)",
25+
"/profile/:id",
26+
"/community",
27+
"/jobs",
28+
"/sign-in(.*)",
29+
"/sign-up(.*)",
30+
]);
31+
32+
const isIgnoredRoute = createRouteMatcher(["/api/webhook", "/api/chatgpt"]);
433

534
export default clerkMiddleware((auth, request) => {
635
const { pathname } = new URL(request.url);
7-
if (pathname !== "/" && !isPublicRoute(request)) {
36+
37+
if (isIgnoredRoute(request)) {
38+
return;
39+
}
40+
41+
if (!isPublicRoute(request)) {
842
auth().protect();
943
}
1044
});
1145

1246
export const config = {
1347
matcher: [
14-
// Skip Next.js internals and all static files, unless found in search params
1548
"/((?!_next|[^?]*\\.(?:html?|css|js(?!on)|jpe?g|webp|png|gif|svg|ttf|woff2?|ico|csv|docx?|xlsx?|zip|webmanifest)).*)",
16-
// Always run for API routes
1749
"/(api|trpc)(.*)",
1850
],
1951
};

0 commit comments

Comments
 (0)