"use client"; import React, { createContext, useContext, useState, useEffect } from "react"; import { useRouter } from "next/navigation"; const AuthContext = createContext(null); // фейковые пользователи (3 логина/пароля) const USERS = [ { id: 1, role: "user", // обычный пользователь name: "Пользователь", login: "user@mail.com", password: "user123", }, { id: 2, role: "volunteer", name: "Волонтёр", login: "vol@mail.com", password: "vol123", }, { id: 3, role: "moderator", name: "Модератор", login: "mod@mail.com", password: "mod123", }, ]; export const AuthProvider = ({ children }) => { const [user, setUser] = useState(null); // {id, role, name, login} const [loading, setLoading] = useState(true); const router = useRouter(); // Поднимаем пользователя из localStorage, чтобы контекст сохранялся между перезагрузками useEffect(() => { const saved = typeof window !== "undefined" ? localStorage.getItem("authUser") : null; if (saved) { setUser(JSON.parse(saved)); } setLoading(false); }, []); const login = async (login, password) => { // имитация запроса на бэк const found = USERS.find( (u) => u.login === login && u.password === password ); if (!found) { throw new Error("Неверный логин или пароль"); } const authUser = { id: found.id, role: found.role, name: found.name, login: found.login, }; setUser(authUser); localStorage.setItem("authUser", JSON.stringify(authUser)); // после логина перенаправляем на стартовую страницу по роли if (found.role === "user") router.push("/home"); if (found.role === "volunteer") router.push("/mainValounter"); if (found.role === "moderator") router.push("/moderatorMain"); }; const logout = () => { setUser(null); localStorage.removeItem("authUser"); router.push("/login"); }; const value = { user, loading, isAuthenticated: !!user, login, logout, }; return {children}; }; export const useAuth = () => useContext(AuthContext);