diff --git a/package-lock.json b/package-lock.json index 7e662b8..df79fc0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ "@mui/material": "^5.4.3", "@reduxjs/toolkit": "^1.8.0", "@types/react-big-calendar": "^0.36.2", + "axios": "^0.26.1", "moment": "^2.29.1", "react": "^17.0.2", "react-big-calendar": "^0.39.3", @@ -3522,6 +3523,14 @@ "lodash": "^4.17.14" } }, + "node_modules/axios": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "dependencies": { + "follow-redirects": "^1.14.8" + } + }, "node_modules/babel-plugin-dynamic-import-node": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", @@ -7094,7 +7103,6 @@ "version": "1.14.9", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", - "dev": true, "funding": [ { "type": "individual", @@ -15456,6 +15464,14 @@ "lodash": "^4.17.14" } }, + "axios": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "requires": { + "follow-redirects": "^1.14.8" + } + }, "babel-plugin-dynamic-import-node": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", @@ -18253,8 +18269,7 @@ "follow-redirects": { "version": "1.14.9", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", - "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", - "dev": true + "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==" }, "forwarded": { "version": "0.2.0", diff --git a/package.json b/package.json index 75a49c7..c1b049d 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "@mui/material": "^5.4.3", "@reduxjs/toolkit": "^1.8.0", "@types/react-big-calendar": "^0.36.2", + "axios": "^0.26.1", "moment": "^2.29.1", "react": "^17.0.2", "react-big-calendar": "^0.39.3", diff --git a/src/api/axios.tsx b/src/api/axios.tsx new file mode 100644 index 0000000..0c91aaf --- /dev/null +++ b/src/api/axios.tsx @@ -0,0 +1,5 @@ +import axios from "axios"; + +export default axios.create({ + baseURL: "https://g17vmhsvwi.execute-api.us-west-2.amazonaws.com/Prod" +}); \ No newline at end of file diff --git a/src/components/login/Login.tsx b/src/components/login/Login.tsx index ca9563d..397c4a9 100644 --- a/src/components/login/Login.tsx +++ b/src/components/login/Login.tsx @@ -8,6 +8,11 @@ import hsbcLogo from "../../assets/logo-png.png"; import zoomLogo from "../../assets/zoom.png"; import LoginIcon from "@mui/icons-material/Login"; import useAuth from "../../hooks/useAuth"; +import { store } from "../../redux/store"; +import { fetchFavorites } from "../../redux/slices/favoritesSlice"; +import { fetchMeetings } from "../../redux/slices/meetingsAndUserStatusSlice"; +import { fetchUsers } from "../../redux/slices/usersSlice"; +import axios from "../../api/axios" interface LocationState { from: { pathname: string }; @@ -20,7 +25,7 @@ const Login: React.FC = () => { const state = location.state as LocationState; const from = state?.from?.pathname || "/"; - const [username, setUsername] = useState(""); + const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); // const [errMsg, setErrMsg] = useState(''); @@ -35,14 +40,47 @@ const Login: React.FC = () => { // setErrMsg(''); // }, [user, pwd]) - const handleLogin = () => { - if (username === "" && password === "") { - // setAuth({username: username, isLoggedIn: true}); - setAuth["username"] = username; - setAuth["isLoggedIn"] = true; - navigate(from, { replace: true }); + const handleLogin = async(e: React.SyntheticEvent) => { + e.preventDefault(); + + try { + if (email === "" && password === "") { + setAuth["email"] = email; + setAuth["isLoggedIn"] = true; + + store.dispatch(fetchMeetings("")); + store.dispatch(fetchUsers("")); + store.dispatch(fetchFavorites("")); + navigate(from, { replace: true }); + } + + const response = await axios.post( + '/login', + JSON.stringify({ email: email, password: password }) + // { headers: { 'Content-Type': 'application/json' } } + ) + // const response = { data: { userid: "123456" }}; // delete later + + const logedInUserId = response?.data?.userId; + + console.log(email); + console.log(password); + console.log(response?.data); + + if (logedInUserId != undefined) { + setAuth["email"] = email; + setAuth["isLoggedIn"] = true; + + store.dispatch(fetchMeetings(logedInUserId)); + store.dispatch(fetchUsers(logedInUserId)); + store.dispatch(fetchFavorites(logedInUserId)); + navigate(from, { replace: true }); + } + + } catch (error) { + } - setUsername(""); + setEmail(email); setPassword(""); }; @@ -52,13 +90,14 @@ const Login: React.FC = () => { HSBC Logo {/*

{errMsg}

*/} { - setUsername(event.target.value); + setEmail(event.target.value); }} /> { id="outlined-basic" label="Password" variant="outlined" + value={password} placeholder="Password" type="password" onChange={(event) => { diff --git a/src/context/AuthProvider.tsx b/src/context/AuthProvider.tsx index 7f1fbd6..6accd02 100644 --- a/src/context/AuthProvider.tsx +++ b/src/context/AuthProvider.tsx @@ -1,17 +1,17 @@ import { createContext, useState } from "react"; interface loginInfo { - username: string; + email: string; isLoggedIn: boolean; } const AuthContext = createContext({ - username: "", + email: "", isLoggedIn: false, }); export const AuthProvider = ({ children }: { children: React.ReactNode }) => { - const [auth] = useState({ username: "", isLoggedIn: false }); + const [auth] = useState({ email: "", isLoggedIn: false }); return {children}; }; diff --git a/src/hooks/useAuth.tsx b/src/hooks/useAuth.tsx index ebe7cc6..af7ffe0 100644 --- a/src/hooks/useAuth.tsx +++ b/src/hooks/useAuth.tsx @@ -2,7 +2,7 @@ import { useContext } from "react"; import AuthContext from "../context/AuthProvider"; interface loginInfo { - username: string; + email: string; isLoggedIn: boolean; } diff --git a/src/index.tsx b/src/index.tsx index be6fea4..3d0e939 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -4,13 +4,10 @@ import "./style/App.css"; import { AuthProvider } from "./context/AuthProvider"; import { Provider } from "react-redux"; import { store } from "./redux/store"; -import { fetchFavorites } from "./redux/slices/favoritesSlice"; -import { fetchMeetings } from "./redux/slices/meetingsAndUserStatusSlice"; -import { fetchUsers } from "./redux/slices/usersSlice"; -store.dispatch(fetchMeetings("")); -store.dispatch(fetchUsers("")); -store.dispatch(fetchFavorites("")); +// store.dispatch(fetchMeetings("")); +// store.dispatch(fetchUsers("")); +// store.dispatch(fetchFavorites("")); const Index: React.FC = () => { return (