MPEDA / src /contexts /AuthContext.tsx
sarveshpatel's picture
Upload 139 files
f305a41 verified
import React, { createContext, useContext, useState, ReactNode } from 'react';
import { User, UserRole, users } from '@/data/dummyData';
interface AuthContextType {
user: User | null;
login: (email: string, password: string) => boolean;
logout: () => void;
isAuthenticated: boolean;
}
const AuthContext = createContext<AuthContextType | undefined>(undefined);
export function AuthProvider({ children }: { children: ReactNode }) {
const [user, setUser] = useState<User | null>(() => {
const saved = localStorage.getItem('shaphari_user');
return saved ? JSON.parse(saved) : null;
});
const login = (email: string, password: string): boolean => {
// Dummy authentication - in production, this would validate against a backend
const foundUser = users.find(u => u.email.toLowerCase() === email.toLowerCase());
if (foundUser) {
setUser(foundUser);
localStorage.setItem('shaphari_user', JSON.stringify(foundUser));
return true;
}
return false;
};
const logout = () => {
setUser(null);
localStorage.removeItem('shaphari_user');
};
return (
<AuthContext.Provider value={{ user, login, logout, isAuthenticated: !!user }}>
{children}
</AuthContext.Provider>
);
}
export function useAuth() {
const context = useContext(AuthContext);
if (context === undefined) {
throw new Error('useAuth must be used within an AuthProvider');
}
return context;
}