summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsoryu <soryu@soryu.co>2026-01-11 04:11:06 +0000
committersoryu <soryu@soryu.co>2026-01-11 04:11:06 +0000
commit353918e05fb6455600fa2b15b44b2e8fea647760 (patch)
tree9c571878674d1d1a68e4534f05a9d26a9f7211ea
parent3d15ec753f93babcc1fa0cf3958f1f164e98fea4 (diff)
downloadsoryu-353918e05fb6455600fa2b15b44b2e8fea647760.tar.gz
soryu-353918e05fb6455600fa2b15b44b2e8fea647760.zip
Add auth variables by default
-rw-r--r--makima/frontend/prod.env3
-rw-r--r--makima/frontend/src/contexts/AuthContext.tsx27
-rw-r--r--makima/frontend/src/lib/supabase.ts32
3 files changed, 18 insertions, 44 deletions
diff --git a/makima/frontend/prod.env b/makima/frontend/prod.env
deleted file mode 100644
index ac420e2..0000000
--- a/makima/frontend/prod.env
+++ /dev/null
@@ -1,3 +0,0 @@
-# These are all public tokens / config
-VITE_SUPABASE_URL=https://jalcdbwvbzvtxrwduwop.supabase.co
-VITE_SUPABASE_PUBLISHABLE_DEFAULT_KEY=sb_publishable_7aM3npUD3py5tVei-juGJw_PmdT-hl0
diff --git a/makima/frontend/src/contexts/AuthContext.tsx b/makima/frontend/src/contexts/AuthContext.tsx
index ce2724b..809c98a 100644
--- a/makima/frontend/src/contexts/AuthContext.tsx
+++ b/makima/frontend/src/contexts/AuthContext.tsx
@@ -6,7 +6,7 @@ import {
useCallback,
type ReactNode,
} from "react";
-import { supabase, isAuthConfigured, type Session, type User } from "../lib/supabase";
+import { supabase, isAuthConfigured, SUPABASE_URL, type Session, type User } from "../lib/supabase";
interface AuthState {
user: User | null;
@@ -42,16 +42,6 @@ export function AuthProvider({ children }: { children: ReactNode }) {
// Initialize auth state
useEffect(() => {
- if (!supabase) {
- // Auth not configured - allow unauthenticated access
- setState((prev) => ({
- ...prev,
- isLoading: false,
- isAuthenticated: true, // Allow access when auth is not configured
- }));
- return;
- }
-
// Get initial session
supabase.auth.getSession().then(({ data: { session } }) => {
setState({
@@ -84,9 +74,6 @@ export function AuthProvider({ children }: { children: ReactNode }) {
const signIn = useCallback(
async (email: string, password: string): Promise<{ error: Error | null }> => {
- if (!supabase) {
- return { error: new Error("Auth not configured") };
- }
const { error } = await supabase.auth.signInWithPassword({ email, password });
return { error: error ? new Error(error.message) : null };
},
@@ -95,9 +82,6 @@ export function AuthProvider({ children }: { children: ReactNode }) {
const signUp = useCallback(
async (email: string, password: string): Promise<{ error: Error | null }> => {
- if (!supabase) {
- return { error: new Error("Auth not configured") };
- }
const { error } = await supabase.auth.signUp({ email, password });
return { error: error ? new Error(error.message) : null };
},
@@ -114,20 +98,15 @@ export function AuthProvider({ children }: { children: ReactNode }) {
}));
// Clear Supabase storage directly in case signOut API fails
- const storageKey = `sb-${import.meta.env.VITE_SUPABASE_URL?.split('//')[1]?.split('.')[0]}-auth-token`;
+ const storageKey = `sb-${SUPABASE_URL.split('//')[1]?.split('.')[0]}-auth-token`;
localStorage.removeItem(storageKey);
// Try to call signOut API (may fail if token is invalid, that's OK)
- if (supabase) {
- await supabase.auth.signOut({ scope: 'local' }).catch(() => {});
- }
+ await supabase.auth.signOut({ scope: 'local' }).catch(() => {});
}, []);
const signInWithOAuth = useCallback(
async (provider: "github" | "google"): Promise<{ error: Error | null }> => {
- if (!supabase) {
- return { error: new Error("Auth not configured") };
- }
const { error } = await supabase.auth.signInWithOAuth({
provider,
options: {
diff --git a/makima/frontend/src/lib/supabase.ts b/makima/frontend/src/lib/supabase.ts
index eedff10..2f2528f 100644
--- a/makima/frontend/src/lib/supabase.ts
+++ b/makima/frontend/src/lib/supabase.ts
@@ -1,26 +1,24 @@
import { createClient, SupabaseClient, Session, User } from "@supabase/supabase-js";
-// Supabase configuration from environment variables
-const SUPABASE_URL = import.meta.env.VITE_SUPABASE_URL as string | undefined;
-const SUPABASE_ANON_KEY = import.meta.env.VITE_SUPABASE_ANON_KEY as string | undefined;
+// Default Supabase configuration (can be overridden by environment variables)
+const DEFAULT_SUPABASE_URL = "https://jalcdbwvbzvtxrwduwop.supabase.co";
+const DEFAULT_SUPABASE_ANON_KEY = "sb_publishable_7aM3npUD3py5tVei-juGJw_PmdT-hl0";
-// Only create client if configuration is available
-let supabaseClient: SupabaseClient | null = null;
+// Use environment variables if set, otherwise fall back to defaults
+export const SUPABASE_URL = import.meta.env.VITE_SUPABASE_URL || DEFAULT_SUPABASE_URL;
+const SUPABASE_ANON_KEY = import.meta.env.VITE_SUPABASE_ANON_KEY || DEFAULT_SUPABASE_ANON_KEY;
-if (SUPABASE_URL && SUPABASE_ANON_KEY) {
- supabaseClient = createClient(SUPABASE_URL, SUPABASE_ANON_KEY, {
- auth: {
- autoRefreshToken: true,
- persistSession: true,
- detectSessionInUrl: true,
- },
- });
-}
-
-export const supabase = supabaseClient;
+// Create Supabase client with default or overridden configuration
+export const supabase: SupabaseClient = createClient(SUPABASE_URL, SUPABASE_ANON_KEY, {
+ auth: {
+ autoRefreshToken: true,
+ persistSession: true,
+ detectSessionInUrl: true,
+ },
+});
export function isAuthConfigured(): boolean {
- return supabaseClient !== null;
+ return true;
}
export type { Session, User };