added env validation for server

This commit is contained in:
Nate Kelley 2025-08-11 11:39:08 -06:00
parent 21c76f268a
commit 28e704c53e
No known key found for this signature in database
GPG Key ID: FD90372AB8D98B4F
5 changed files with 19 additions and 9 deletions

View File

@ -1,7 +1,6 @@
import { dbPing } from '@buster/database';
import { Hono } from 'hono';
import type { Context } from 'hono';
interface HealthCheckResult {
status: 'healthy' | 'unhealthy' | 'degraded';
timestamp: string;

View File

@ -1,6 +1,10 @@
import { Hono } from 'hono';
import { z } from 'zod';
// Load environment variables from root .env file
import { loadRootEnv } from '@buster/env-utils';
loadRootEnv();
// Import custom middleware
import { corsMiddleware } from './middleware/cors';
import { loggerMiddleware } from './middleware/logger';

View File

@ -2,14 +2,12 @@ import { getUser, getUserOrganizationId } from '@buster/database';
import type { Context, Next } from 'hono';
import { bearerAuth } from 'hono/bearer-auth';
import { isOrganizationAdmin } from '../utils/admin';
import { createSupabaseClient } from './supabase';
const supabase = createSupabaseClient();
import { getSupabaseClient } from './supabase';
export const requireAuth = bearerAuth({
verifyToken: async (token, c) => {
try {
const { data, error } = await supabase.auth.getUser(token); //usually takes about 3 - 7ms
const { data, error } = await getSupabaseClient().auth.getUser(token); //usually takes about 3 - 7ms
if (error) {
// Log specific auth errors to help with debugging
@ -73,7 +71,7 @@ export async function requireUser(c: Context, next: Next) {
}
try {
const { data, error } = await supabase.auth.getUser(token);
const { data, error } = await getSupabaseClient().auth.getUser(token);
if (error) {
console.warn('Token validation failed in requireUser:', {

View File

@ -17,3 +17,12 @@ export const createSupabaseClient = () => {
return supabase;
};
let globalSupabase: ReturnType<typeof createSupabaseClient> | null = null;
export const getSupabaseClient = () => {
if (!globalSupabase) {
globalSupabase = createSupabaseClient();
}
return globalSupabase;
};

View File

@ -30,7 +30,7 @@
"@buster/vitest-config": "workspace:*",
"@buster/web-tools": "workspace:*",
"@mastra/core": "catalog:",
"@trigger.dev/sdk": "4.0.0-v4-beta.26",
"@trigger.dev/sdk": "4.0.0-v4-beta.27",
"ai": "catalog:",
"braintrust": "catalog:",
"vitest": "catalog:",
@ -38,6 +38,6 @@
"drizzle-orm": "catalog:"
},
"devDependencies": {
"@trigger.dev/build": "^4.0.0-v4-beta.26"
"@trigger.dev/build": "4.0.0-v4-beta.27"
}
}