forked from aahmadyar123/CookMyFridge
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathAuthProvider.js
89 lines (72 loc) · 2 KB
/
AuthProvider.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import React from 'react'
import { createContext, useContext, useState } from "react";
import { useNavigate } from 'react-router-dom';
import axios from 'axios';
const dotenv = require("dotenv");
dotenv.config();
const AuthContext = createContext({});
export const AuthProvider = ({ children }) => {
const [token, setToken] = useState(null);
const [loadIngred, setLoadIngred] = useState(0);
const [loadFav, setLoadFav] = useState(0);
const navigate = useNavigate();
const handleRegister = async (user) => {
const response = await axios.post(`https://cookmyfridge-backend.azurewebsites.net/register`, user);
const token = response.data['token']
setToken(token);
//store in cookies
document.cookie = `token=${token}`;
navigate('/');
};
const set_loadIngred = () => {
setLoadIngred(1);
}
const set_loadFav = () => {
setLoadFav(1);
}
const delay = ms => new Promise(
resolve => setTimeout(resolve, ms)
);
const to_save = async () => {
navigate('/services/ingredients');
await delay(100);
navigate('/services/saved_recipes');
}
const handleLogin = async (user) => {
console.log("In Login");
try{
const response = await axios.post(`https://cookmyfridge-backend.azurewebsites.net/login`, user);
if (response.status === 201){
const token = response.data['token'];
setToken(token);
//store in cookies
document.cookie = `token=${token}`;
navigate('/');
return false;
}
}
catch {
return true;
}
}
const handleLogout = () => {
setToken(null);
};
const value = {
token,
loadIngred,
loadFav,
toSave: to_save,
setLoadIngred: set_loadIngred,
setLoadFav: set_loadFav,
onLogin: handleLogin,
onLogout: handleLogout,
onRegister: handleRegister
};
return (
<AuthContext.Provider value={{Auth : value}}>
{children}
</AuthContext.Provider>
);
};
export const useAuth = () => useContext(AuthContext);