55 lines
1.2 KiB
JavaScript
55 lines
1.2 KiB
JavaScript
import { useState, } from 'react';
|
|
import UserService from "../services/UserService";
|
|
import BasketService from "../services/BasketService";
|
|
|
|
export function useUser() {
|
|
const [user, setUser] = useState(null);
|
|
|
|
async function authorization(data) {
|
|
try {
|
|
const response = await UserService.login(data);
|
|
setUser(response);
|
|
localStorage.setItem("user", JSON.stringify(response));
|
|
} catch (error) {
|
|
throw new Error(error);
|
|
}
|
|
}
|
|
|
|
async function reg(data) {
|
|
try {
|
|
const response = await UserService.registration({...data, "role": "user"});
|
|
await BasketService.createBasket(response.id);
|
|
setUser(response);
|
|
localStorage.setItem("user", JSON.stringify(response));
|
|
} catch (error) {
|
|
throw new Error(error);
|
|
}
|
|
}
|
|
|
|
function logout() {
|
|
setUser(null);
|
|
localStorage.removeItem("user");
|
|
}
|
|
|
|
function checkIsAuth() {
|
|
if (user) {
|
|
return;
|
|
}
|
|
|
|
const uuser = localStorage.getItem('user');
|
|
if (uuser) {
|
|
const t = JSON.parse(uuser);
|
|
setUser(t);
|
|
}
|
|
}
|
|
|
|
return {
|
|
id: user ? user.id : null,
|
|
isAdmin: Boolean(user && user.role == "admin"),
|
|
isAuth: user && user.id,
|
|
authorization,
|
|
reg,
|
|
logout,
|
|
checkIsAuth
|
|
};
|
|
} |