._.
This commit is contained in:
parent
49b78da600
commit
d9ab6ac43c
@ -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>
|
||||
);
|
||||
|
||||
@ -19,7 +19,6 @@ export const loginUser = async (loginData) => {
|
||||
Accept: "application/json",
|
||||
},
|
||||
});
|
||||
console.log(response.data);
|
||||
return response.data;
|
||||
} catch (error) {
|
||||
console.log(
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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 : "Ошибка авторизации");
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user