From 1e181785b46fb9980afcafd56178ee463fd985ab Mon Sep 17 00:00:00 2001 From: Lucas Santana Date: Fri, 20 Dec 2024 14:30: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 --- src/components/auth/ProtectedRoute.tsx | 3 ++- src/components/header/ProfileMenu.tsx | 1 + src/hooks/useAuth.tsx | 14 +++++++------- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/components/auth/ProtectedRoute.tsx b/src/components/auth/ProtectedRoute.tsx index 2ed2fdd..3493b6a 100644 --- a/src/components/auth/ProtectedRoute.tsx +++ b/src/components/auth/ProtectedRoute.tsx @@ -2,10 +2,11 @@ import React from 'react'; import { Navigate, useLocation } from 'react-router-dom'; import { useAuth } from '../../hooks/useAuth'; import type { AuthContextType } from '../../hooks/useAuth'; +import type { UserRole } from '../../types/supabase'; interface ProtectedRouteProps { children: React.ReactNode; - allowedRoles?: string[]; + allowedRoles?: UserRole[]; } export function ProtectedRoute({ children, allowedRoles = [] }: ProtectedRouteProps) { diff --git a/src/components/header/ProfileMenu.tsx b/src/components/header/ProfileMenu.tsx index 2bad2ad..822c50c 100644 --- a/src/components/header/ProfileMenu.tsx +++ b/src/components/header/ProfileMenu.tsx @@ -3,6 +3,7 @@ import { useNavigate } from 'react-router-dom'; import { LogOut, Settings, LayoutDashboard } from 'lucide-react'; import { useAuth } from '../../hooks/useAuth'; import type { AuthContextType } from '../../hooks/useAuth'; +import type { UserRole } from '../../types/supabase'; export function ProfileMenu() { const { user, userRole, signOut } = useAuth(); diff --git a/src/hooks/useAuth.tsx b/src/hooks/useAuth.tsx index b9faafc..45dda11 100644 --- a/src/hooks/useAuth.tsx +++ b/src/hooks/useAuth.tsx @@ -1,8 +1,8 @@ import React from 'react'; import { useNavigate } from 'react-router-dom'; import { supabase } from '../lib/supabase'; -import { User, UserMetadata } from '@supabase/supabase-js'; -import { UserMetadata as SupabaseUserMetadata } from '../types/supabase'; +import { User } from '@supabase/supabase-js'; +import { UserMetadata, UserRole } from '../types/supabase'; export interface AuthContextType { user: User | null; @@ -11,7 +11,7 @@ export interface AuthContextType { signIn: (email: string, password: string) => Promise; signUp: (email: string, password: string) => Promise; signOut: () => Promise; - userRole: UserMetadata['role'] | null; + userRole: UserRole | null; } const AuthContext = React.createContext(undefined); @@ -19,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(() => { @@ -29,7 +29,7 @@ export function AuthProvider({ children }: { children: React.ReactNode }) { if (session?.user) { setUser(session.user); - const role = session.user.user_metadata.role; + const role = session.user.user_metadata.role as UserMetadata['role']; console.log('Role na sessão:', role); setUserRole(role); @@ -48,7 +48,7 @@ export function AuthProvider({ children }: { children: React.ReactNode }) { if (session?.user) { setUser(session.user); - const role = session.user.user_metadata.role; + const role = session.user.user_metadata.role as UserMetadata['role']; console.log('Role no evento:', role); setUserRole(role); @@ -93,7 +93,7 @@ export function AuthProvider({ children }: { children: React.ReactNode }) { ); } -export function useAuth() { +export function useAuth(): AuthContextType { const context = React.useContext(AuthContext); if (context === undefined) { throw new Error('useAuth must be used within an AuthProvider');