Files
tp/easySite/easy-site/src/contexts/AuthContext.js
T
valitovgaziz 5898bc6d5a modified: .gitignore
new file:   easySite/easy-site/README.md
	new file:   easySite/easy-site/package-lock.json
	new file:   easySite/easy-site/package.json
	new file:   easySite/easy-site/public/favicon.ico
	new file:   easySite/easy-site/public/index.html
	new file:   easySite/easy-site/public/logo192.png
	new file:   easySite/easy-site/public/logo512.png
	new file:   easySite/easy-site/public/manifest.json
	new file:   easySite/easy-site/public/robots.txt
	new file:   easySite/easy-site/src/App.css
	new file:   easySite/easy-site/src/App.js
	new file:   easySite/easy-site/src/App.test.js
	new file:   easySite/easy-site/src/contexts/AuthContext.js
	new file:   easySite/easy-site/src/contexts/useAuth.js
	new file:   easySite/easy-site/src/index.css
	new file:   easySite/easy-site/src/index.js
	new file:   easySite/easy-site/src/logo.svg
	new file:   easySite/easy-site/src/pages/AddObject.js
	new file:   easySite/easy-site/src/pages/Dashboard.js
	new file:   easySite/easy-site/src/pages/EditObject.js
	new file:   easySite/easy-site/src/pages/Home.js
	new file:   easySite/easy-site/src/pages/Login.js
	new file:   easySite/easy-site/src/pages/Register.js
	new file:   easySite/easy-site/src/reportWebVitals.js
	new file:   easySite/easy-site/src/setupTests.js
	new file:   package-lock.json
	new file:   package.json
	modified:   valitovgaziz/html/saveContactsButtonStyle.css
Add the easy_site site on react
2025-07-18 16:26:11 +05:00

53 lines
1.5 KiB
JavaScript

// src/contexts/AuthContext.js
import React, { useState, createContext, useEffect } from 'react';
import axios from 'axios';
const AuthContext = createContext();
export const AuthProvider = ({ children }) => {
const [currentUser, setCurrentUser] = useState(null);
const login = async (email, password) => {
try {
const response = await axios.post('/api/login', { email, password });
if (response.data.token) {
localStorage.setItem('token', response.data.token); // сохраняем токен в Local Storage
setCurrentUser(response.data.user);
}
} catch (err) {
console.error(err.response ? err.response.data : err.message);
}
};
const register = async (name, email, password) => {
try {
const response = await axios.post('/api/register', { name, email, password });
if (response.data.token) {
localStorage.setItem('token', response.data.token);
setCurrentUser(response.data.user);
}
} catch (err) {
console.error(err.response ? err.response.data : err.message);
}
};
const logout = () => {
localStorage.removeItem('token');
setCurrentUser(null);
};
useEffect(() => {
const token = localStorage.getItem('token');
if (token) {
axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;
}
}, []);
return (
<AuthContext.Provider value={{ currentUser, login, register, logout }}>
{children}
</AuthContext.Provider>
);
};
export default AuthContext;