11import { createContext , useContext , useEffect , useState , type ReactNode } from "react" ;
22import api from "@/services/api" ;
33
4+ interface User {
5+ id : number ;
6+ username : string ;
7+ email : string ;
8+ role : string ;
9+ }
10+
411interface AuthContextType {
512 isAuthenticated : boolean | null ;
13+ user : User | null ;
614 role : string | null ;
715 loading : boolean ;
816 login : ( ) => void ; // call this after successful login to update state
@@ -13,16 +21,19 @@ const AuthContext = createContext<AuthContextType | undefined>(undefined);
1321
1422export function AuthProvider ( { children } : { children : ReactNode } ) {
1523 const [ isAuthenticated , setIsAuthenticated ] = useState < boolean | null > ( null ) ;
24+ const [ user , setUser ] = useState < User | null > ( null ) ;
1625 const [ role , setRole ] = useState < string | null > ( null ) ;
1726 const [ loading , setLoading ] = useState ( true ) ;
1827
1928 const checkAuth = async ( ) => {
2029 try {
2130 const response = await api . get ( '/protected/user/me' ) ;
2231 setIsAuthenticated ( true ) ;
32+ setUser ( response . data . data ) ;
2333 setRole ( response . data . data . role ) ;
2434 } catch {
2535 setIsAuthenticated ( false ) ;
36+ setUser ( null ) ;
2637 setRole ( null ) ;
2738 } finally {
2839 setLoading ( false ) ;
@@ -45,12 +56,13 @@ export function AuthProvider({ children }: { children: ReactNode }) {
4556 console . error ( "Logout failed" , error ) ;
4657 } finally {
4758 setIsAuthenticated ( false ) ;
59+ setUser ( null ) ;
4860 setRole ( null ) ;
4961 }
5062 } ;
5163
5264 return (
53- < AuthContext . Provider value = { { isAuthenticated, role, loading, login, logout } } >
65+ < AuthContext . Provider value = { { isAuthenticated, user , role, loading, login, logout } } >
5466 { children }
5567 </ AuthContext . Provider >
5668 ) ;
0 commit comments