diff --git a/src/components/auth/ProtectedRoute.tsx b/src/components/auth/ProtectedRoute.tsx index 482e80c..2ed2fdd 100644 --- a/src/components/auth/ProtectedRoute.tsx +++ b/src/components/auth/ProtectedRoute.tsx @@ -1,6 +1,7 @@ import React from 'react'; import { Navigate, useLocation } from 'react-router-dom'; -import { useAuth, AuthContextType } from '../../hooks/useAuth'; +import { useAuth } from '../../hooks/useAuth'; +import type { AuthContextType } from '../../hooks/useAuth'; interface ProtectedRouteProps { children: React.ReactNode; diff --git a/src/hooks/useAuth.tsx b/src/hooks/useAuth.tsx index dceb819..b9faafc 100644 --- a/src/hooks/useAuth.tsx +++ b/src/hooks/useAuth.tsx @@ -1,7 +1,8 @@ import React from 'react'; import { useNavigate } from 'react-router-dom'; import { supabase } from '../lib/supabase'; -import { User } from '@supabase/supabase-js'; +import { User, UserMetadata } from '@supabase/supabase-js'; +import { UserMetadata as SupabaseUserMetadata } from '../types/supabase'; export interface AuthContextType { user: User | null; @@ -10,7 +11,7 @@ export interface AuthContextType { signIn: (email: string, password: string) => Promise; signUp: (email: string, password: string) => Promise; signOut: () => Promise; - userRole: string | null; + userRole: UserMetadata['role'] | null; } const AuthContext = React.createContext(undefined); @@ -18,7 +19,7 @@ const AuthContext = React.createContext(undefined); export function AuthProvider({ children }: { children: React.ReactNode }) { const navigate = useNavigate(); const [user, setUser] = React.useState(null); - const [userRole, setUserRole] = React.useState(null); + const [userRole, setUserRole] = React.useState(null); const [loading, setLoading] = React.useState(true); React.useEffect(() => { diff --git a/src/pages/admin/UserManagementPage.tsx b/src/pages/admin/UserManagementPage.tsx index b94bfde..5037d6c 100644 --- a/src/pages/admin/UserManagementPage.tsx +++ b/src/pages/admin/UserManagementPage.tsx @@ -1,12 +1,14 @@ import React from 'react'; import { supabase } from '../../lib/supabase'; -import { User } from '@supabase/supabase-js'; +import { User, UserMetadata } from '@supabase/supabase-js'; -interface AdminUser extends User { +interface AdminUserMetadata extends UserMetadata { + role?: string; +} + +interface AdminUser extends Omit { email: string; - user_metadata?: { - role?: string; - }; + user_metadata: AdminUserMetadata; } export function UserManagementPage() { @@ -25,10 +27,16 @@ export function UserManagementPage() { if (error) throw error; const validUsers = users?.filter((user): user is AdminUser => - typeof user.email === 'string' && user.email !== undefined + typeof user.email === 'string' && + user.email !== undefined && + user.user_metadata !== null ).map(user => ({ ...user, email: user.email!, + user_metadata: { + ...user.user_metadata, + role: user.user_metadata?.role || '' + } })) || []; setUsers(validUsers);