._.
This commit is contained in:
parent
49b78da600
commit
d9ab6ac43c
@ -11,13 +11,17 @@ export const AuthProvider = ({ children }) => {
|
|||||||
const savedAuth = localStorage.getItem("isAuthenticated");
|
const savedAuth = localStorage.getItem("isAuthenticated");
|
||||||
return savedAuth === "true";
|
return savedAuth === "true";
|
||||||
});
|
});
|
||||||
|
const [user, setUser] = useState(null);
|
||||||
|
|
||||||
const login = () => {
|
const login = (userData) => {
|
||||||
setIsAuthenticated(true);
|
setIsAuthenticated(true);
|
||||||
|
setUser(userData);
|
||||||
|
localStorage.setItem("token", userData.token);
|
||||||
};
|
};
|
||||||
|
|
||||||
const logout = () => {
|
const logout = () => {
|
||||||
setIsAuthenticated(false);
|
setIsAuthenticated(false);
|
||||||
|
setUser(null);
|
||||||
localStorage.removeItem("token");
|
localStorage.removeItem("token");
|
||||||
localStorage.removeItem("isAuthenticated");
|
localStorage.removeItem("isAuthenticated");
|
||||||
};
|
};
|
||||||
@ -27,7 +31,7 @@ export const AuthProvider = ({ children }) => {
|
|||||||
}, [isAuthenticated]);
|
}, [isAuthenticated]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<AuthContext.Provider value={{ isAuthenticated, login, logout }}>
|
<AuthContext.Provider value={{ isAuthenticated, user, login, logout }}>
|
||||||
{children}
|
{children}
|
||||||
</AuthContext.Provider>
|
</AuthContext.Provider>
|
||||||
);
|
);
|
||||||
|
|||||||
@ -19,7 +19,6 @@ export const loginUser = async (loginData) => {
|
|||||||
Accept: "application/json",
|
Accept: "application/json",
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
console.log(response.data);
|
|
||||||
return response.data;
|
return response.data;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.log(
|
console.log(
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { Link, useNavigate } from "react-router-dom";
|
|||||||
import { useAuth } from "../AuthContext";
|
import { useAuth } from "../AuthContext";
|
||||||
|
|
||||||
const Header = () => {
|
const Header = () => {
|
||||||
const { isAuthenticated, logout } = useAuth();
|
const { isAuthenticated, logout, user } = useAuth();
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
|
||||||
const handleLogout = () => {
|
const handleLogout = () => {
|
||||||
@ -24,18 +24,19 @@ const Header = () => {
|
|||||||
Home
|
Home
|
||||||
</Link>
|
</Link>
|
||||||
</li>
|
</li>
|
||||||
<li className="nav-item">
|
|
||||||
<Link className="nav-link" to="/accessories">
|
|
||||||
Accessories
|
|
||||||
</Link>
|
|
||||||
</li>
|
|
||||||
{/* Добавьте другие ссылки, если необходимо */}
|
{/* Добавьте другие ссылки, если необходимо */}
|
||||||
</ul>
|
</ul>
|
||||||
<div className="d-flex">
|
<div className="d-flex align-items-center ml-auto">
|
||||||
{isAuthenticated ? (
|
{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
|
Logout
|
||||||
</button>
|
</button>
|
||||||
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<Link className="btn btn-outline-primary" to="/login">
|
<Link className="btn btn-outline-primary" to="/login">
|
||||||
Login
|
Login
|
||||||
|
|||||||
@ -1,22 +1,23 @@
|
|||||||
|
// app/src/pages/Login.jsx
|
||||||
|
|
||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import { loginUser } from "../api";
|
import { loginUser } from "../api";
|
||||||
import { useNavigate } from "react-router-dom";
|
import { useNavigate } from "react-router-dom";
|
||||||
import { useAuth } from "../AuthContext";
|
import { useAuth } from "../AuthContext"; // Импортируйте useAuth
|
||||||
|
|
||||||
const Login = () => {
|
const Login = () => {
|
||||||
const [login, setLogin] = useState("");
|
const [login, setLogin] = useState("");
|
||||||
const [password, setPassword] = useState("");
|
const [password, setPassword] = useState("");
|
||||||
const [error, setError] = useState("");
|
const [error, setError] = useState("");
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const { login: authenticate } = useAuth();
|
const { login: loginContext } = useAuth();
|
||||||
|
|
||||||
const handleSubmit = async (e) => {
|
const handleSubmit = async (e) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const userData = await loginUser({ login, password });
|
const userData = await loginUser({ login, password });
|
||||||
localStorage.setItem("token", userData.access_token);
|
loginContext(userData);
|
||||||
authenticate();
|
|
||||||
navigate("/");
|
navigate("/");
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
setError(error.detail ? error.detail : "Ошибка авторизации");
|
setError(error.detail ? error.detail : "Ошибка авторизации");
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user