diff --git a/nitro.config.ts b/nitro.config.ts index 5c21dbc..b3fa0a2 100644 --- a/nitro.config.ts +++ b/nitro.config.ts @@ -7,7 +7,7 @@ export default defineNitroConfig({ CLOUD_FUNCTION_SECRET: process.env.CLOUD_FUNCTION_SECRET, PROXY_URL: process.env.PROXY_URL, INTERNAL_SECRET: process.env.INTERNAL_SECRET, - gcf:{ + gcf: { queueWorkerUrl: process.env.CLOUD_FUNCTION_QUEUE_URL, usernameWorkerUrl: process.env.CLOUD_FUNCTION_USERNAME_URL, }, diff --git a/server/middleware/auth.ts b/server/middleware/auth.ts index 0f77a71..7dafffa 100644 --- a/server/middleware/auth.ts +++ b/server/middleware/auth.ts @@ -1,7 +1,12 @@ import { serverSupabaseUser } from "~/utils/supabase"; +import config from "~~/threadseeker.config"; export default defineEventHandler(async (event) => { - if (getRequestURL(event).pathname.startsWith("/api")) { + const isPublicRoute = config.publicRoutes.some((route) => + getRequestURL(event).pathname.startsWith(route) + ); + + if (!isPublicRoute) { try { const user = await serverSupabaseUser(event); diff --git a/server/utils/use-redis.ts b/server/utils/use-redis.ts index 6bd5c2f..c9053a9 100644 --- a/server/utils/use-redis.ts +++ b/server/utils/use-redis.ts @@ -5,7 +5,7 @@ import redisDriver from "unstorage/drivers/redis"; export const useRedis = (event: H3Event): Storage => { // No need to recreate client if exists in request context - if(!event.context._redis) { + if (!event.context._redis) { event.context._redis = createStorage({ driver: redisDriver({ url: process.env.REDIS_URL, diff --git a/server/utils/use-threads.ts b/server/utils/use-threads.ts index 99ce6ca..7545411 100644 --- a/server/utils/use-threads.ts +++ b/server/utils/use-threads.ts @@ -177,19 +177,20 @@ export function useThreads(event: H3Event) { }, getUserProfile: async (username: string): Promise => { const config = useRuntimeConfig(event); - const response = await $fetch(config.gcf.usernameWorkerUrl, + const response = await $fetch( + config.gcf.usernameWorkerUrl, { method: "GET", headers: { "Content-Type": "application/json", - "Authorization": `${config.CLOUD_FUNCTION_SECRET}` + Authorization: `${config.CLOUD_FUNCTION_SECRET}`, }, params: { username, }, } - ) - if(response.data && response.status === "ok") { + ); + if (response.data && response.status === "ok") { return response.data; } return null; diff --git a/threadseeker.config.ts b/threadseeker.config.ts new file mode 100644 index 0000000..b4a6013 --- /dev/null +++ b/threadseeker.config.ts @@ -0,0 +1,3 @@ +export default { + publicRoutes: ["/api/v1/threads/report"], +};