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');