This commit is contained in:
Андрей Дувакин 2024-10-05 10:45:17 +05:00
parent 49b78da600
commit d9ab6ac43c
4 changed files with 22 additions and 17 deletions

View File

@ -11,13 +11,17 @@ export const AuthProvider = ({ children }) => {
const savedAuth = localStorage.getItem("isAuthenticated");
return savedAuth === "true";
});
const [user, setUser] = useState(null);
const login = () => {
const login = (userData) => {
setIsAuthenticated(true);
setUser(userData);
localStorage.setItem("token", userData.token);
};
const logout = () => {
setIsAuthenticated(false);
setUser(null);
localStorage.removeItem("token");
localStorage.removeItem("isAuthenticated");
};
@ -27,7 +31,7 @@ export const AuthProvider = ({ children }) => {
}, [isAuthenticated]);
return (
<AuthContext.Provider value={{ isAuthenticated, login, logout }}>
<AuthContext.Provider value={{ isAuthenticated, user, login, logout }}>
{children}
</AuthContext.Provider>
);

View File

@ -19,7 +19,6 @@ export const loginUser = async (loginData) => {
Accept: "application/json",
},
});
console.log(response.data);
return response.data;
} catch (error) {
console.log(

View File

@ -3,7 +3,7 @@ import { Link, useNavigate } from "react-router-dom";
import { useAuth } from "../AuthContext";
const Header = () => {
const { isAuthenticated, logout } = useAuth();
const { isAuthenticated, logout, user } = useAuth();
const navigate = useNavigate();
const handleLogout = () => {
@ -24,18 +24,19 @@ const Header = () => {
Home
</Link>
</li>
<li className="nav-item">
<Link className="nav-link" to="/accessories">
Accessories
</Link>
</li>
{/* Добавьте другие ссылки, если необходимо */}
</ul>
<div className="d-flex">
<div className="d-flex align-items-center ml-auto">
{isAuthenticated ? (
<button className="btn btn-outline-danger" onClick={handleLogout}>
<div className="nav-item d-flex align-items-center">
<span className="nav-link">{user?.user.login}</span>{" "}
<button
className="btn btn-outline-danger"
onClick={handleLogout}
>
Logout
</button>
</div>
) : (
<Link className="btn btn-outline-primary" to="/login">
Login

View File

@ -1,22 +1,23 @@
// app/src/pages/Login.jsx
import React, { useState } from "react";
import { loginUser } from "../api";
import { useNavigate } from "react-router-dom";
import { useAuth } from "../AuthContext";
import { useAuth } from "../AuthContext"; // Импортируйте useAuth
const Login = () => {
const [login, setLogin] = useState("");
const [password, setPassword] = useState("");
const [error, setError] = useState("");
const navigate = useNavigate();
const { login: authenticate } = useAuth();
const { login: loginContext } = useAuth();
const handleSubmit = async (e) => {
e.preventDefault();
try {
const userData = await loginUser({ login, password });
localStorage.setItem("token", userData.access_token);
authenticate();
loginContext(userData);
navigate("/");
} catch (error) {
setError(error.detail ? error.detail : "Ошибка авторизации");