source: sources/client/src/hooks/useLogin.js

Last change on this file was bc20307, checked in by Tasevski2 <39170279+Tasevski2@…>, 2 years ago

Push before video

  • Property mode set to 100644
File size: 1.6 KB
Line 
1import { useContext } from 'react';
2import axios from 'axios';
3import jwt from 'jwt-decode';
4import { AccessoriesContext } from '../context/AccessoriesContext';
5import { UserContext } from '../context/UserContext';
6
7const useLogin = () => {
8 const { setAlert, setIsBackdropLoaderOpen } =
9 useContext(AccessoriesContext);
10 const { setUser } = useContext(UserContext);
11 const loginUser = async ({ email, password }) => {
12 setIsBackdropLoaderOpen(true);
13 const formData = new FormData();
14 formData.append('username', email);
15 formData.append('password', password);
16 await axios
17 .post(`/api/login`, formData)
18 .then((res) => {
19 const token = res.data.access_token;
20 const user = jwt(token);
21 axios.defaults.headers.common['Authorization']= `Bearer ${token}`;
22 localStorage.setItem('token', JSON.stringify(token));
23 setUser({
24 firstName: user.fullName.split(' ')[0] ?? '',
25 lastName: user.fullName.split(' ')[1] ?? '',
26 role: user.roles[0] ?? '',
27 id: user.id,
28 });
29 })
30 .catch((err) => {
31 console.log(err);
32 setAlert({
33 type: 'error',
34 msg: 'Проблеми со серверот!', // TODO change msg to err.message
35 });
36 })
37 .finally(() => {
38 setIsBackdropLoaderOpen(false);
39 });
40 };
41 return {
42 loginUser,
43 };
44};
45
46export default useLogin;
Note: See TracBrowser for help on using the repository browser.