5898bc6d5a
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
53 lines
1.5 KiB
JavaScript
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; |