From dea81a5711d8438eb47ba27c79ce059d8957785d Mon Sep 17 00:00:00 2001 From: Lucas Santana Date: Fri, 20 Dec 2024 13:53:09 -0300 Subject: [PATCH] =?UTF-8?q?fix:=20corrige=20tipagem=20do=20sistema=20de=20?= =?UTF-8?q?autentica=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Exporta interface AuthContextType corretamente - Atualiza tipagem do contexto de autenticação com User do Supabase - Corrige interface AdminUser para estender User do Supabase - Implementa type guard mais seguro para filtragem de usuários - Adiciona implementações vazias para signIn e signUp no AuthContext --- src/components/auth/ProtectedRoute.tsx | 3 +-- src/hooks/useAuth.tsx | 7 +++++-- src/pages/admin/UserManagementPage.tsx | 10 ++++++---- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/components/auth/ProtectedRoute.tsx b/src/components/auth/ProtectedRoute.tsx index 2ed2fdd..482e80c 100644 --- a/src/components/auth/ProtectedRoute.tsx +++ b/src/components/auth/ProtectedRoute.tsx @@ -1,7 +1,6 @@ import React from 'react'; import { Navigate, useLocation } from 'react-router-dom'; -import { useAuth } from '../../hooks/useAuth'; -import type { AuthContextType } from '../../hooks/useAuth'; +import { useAuth, AuthContextType } from '../../hooks/useAuth'; interface ProtectedRouteProps { children: React.ReactNode; diff --git a/src/hooks/useAuth.tsx b/src/hooks/useAuth.tsx index 6218956..dceb819 100644 --- a/src/hooks/useAuth.tsx +++ b/src/hooks/useAuth.tsx @@ -3,7 +3,7 @@ import { useNavigate } from 'react-router-dom'; import { supabase } from '../lib/supabase'; import { User } from '@supabase/supabase-js'; -interface AuthContextType { +export interface AuthContextType { user: User | null; loading: boolean; error: string | null; @@ -70,9 +70,12 @@ export function AuthProvider({ children }: { children: React.ReactNode }) { }; }, [navigate]); - const value = { + const value: AuthContextType = { user, loading, + error: null, + signIn: async () => ({}), + signUp: async () => ({}), signOut: async () => { await supabase.auth.signOut(); setUser(null); diff --git a/src/pages/admin/UserManagementPage.tsx b/src/pages/admin/UserManagementPage.tsx index b5760eb..b94bfde 100644 --- a/src/pages/admin/UserManagementPage.tsx +++ b/src/pages/admin/UserManagementPage.tsx @@ -2,8 +2,7 @@ import React from 'react'; import { supabase } from '../../lib/supabase'; import { User } from '@supabase/supabase-js'; -interface AdminUser { - id: string; +interface AdminUser extends User { email: string; user_metadata?: { role?: string; @@ -26,8 +25,11 @@ export function UserManagementPage() { if (error) throw error; const validUsers = users?.filter((user): user is AdminUser => - typeof user.email === 'string' - ) || []; + typeof user.email === 'string' && user.email !== undefined + ).map(user => ({ + ...user, + email: user.email!, + })) || []; setUsers(validUsers); } catch (err) {