User Profile Details #21
@@ -8,7 +8,11 @@ import usersService from "../../../services/UsersService";
|
|||||||
import InputCom from "../../Helpers/Inputs/InputCom";
|
import InputCom from "../../Helpers/Inputs/InputCom";
|
||||||
import AuthLayout from "../AuthLayout";
|
import AuthLayout from "../AuthLayout";
|
||||||
|
|
||||||
|
import { useDispatch, useSelector } from "react-redux";
|
||||||
|
import { updateUserInfo } from "../../../store/userInfo";
|
||||||
|
|
||||||
export default function Login() {
|
export default function Login() {
|
||||||
|
const dispatch = useDispatch()
|
||||||
const [checked, setValue] = useState(false);
|
const [checked, setValue] = useState(false);
|
||||||
const [loginLoading, setLoginLoading] = useState(false);
|
const [loginLoading, setLoginLoading] = useState(false);
|
||||||
|
|
||||||
@@ -42,12 +46,14 @@ export default function Login() {
|
|||||||
if (loginResult.data.status > 0 && loginResult.data.session_token !='') { // just for a start
|
if (loginResult.data.status > 0 && loginResult.data.session_token !='') { // just for a start
|
||||||
localStorage.setItem("email", `${email}`);
|
localStorage.setItem("email", `${email}`);
|
||||||
localStorage.setItem("session_token", `${loginResult.data.session_token}`);
|
localStorage.setItem("session_token", `${loginResult.data.session_token}`);
|
||||||
|
localStorage.setItem("profile", `${JSON.stringify(loginResult.data.profile)}`);
|
||||||
setLoginLoading(true);
|
setLoginLoading(true);
|
||||||
// userApi.getUserReminders(); //testing
|
// userApi.getUserReminders(); //testing
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
toast.success("Login Successfully");
|
toast.success("Login Successfully");
|
||||||
navigate("/", { replace: true });
|
navigate("/", { replace: true });
|
||||||
setLoginLoading(false);
|
setLoginLoading(false);
|
||||||
|
dispatch(updateUserInfo(loginResult.data.profile))
|
||||||
}, 2000);
|
}, 2000);
|
||||||
} else {
|
} else {
|
||||||
// toast.error("Invalid Credential");
|
// toast.error("Invalid Credential");
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import React, { useContext } from "react";
|
import React, { useContext } from "react";
|
||||||
|
import { useSelector } from "react-redux";
|
||||||
import { Link } from "react-router-dom";
|
import { Link } from "react-router-dom";
|
||||||
import bank1 from "../../assets/images/bank-1.png";
|
import bank1 from "../../assets/images/bank-1.png";
|
||||||
import bank2 from "../../assets/images/bank-2.png";
|
import bank2 from "../../assets/images/bank-2.png";
|
||||||
@@ -11,7 +12,9 @@ import Icons from "../Helpers/Icons";
|
|||||||
import ModalCom from "../Helpers/ModalCom";
|
import ModalCom from "../Helpers/ModalCom";
|
||||||
import SearchCom from "../Helpers/SearchCom";
|
import SearchCom from "../Helpers/SearchCom";
|
||||||
|
|
||||||
|
|
||||||
export default function Header({ logoutModalHandler, sidebarHandler }) {
|
export default function Header({ logoutModalHandler, sidebarHandler }) {
|
||||||
|
const { userInfo } = useSelector((state) => state.userInfo);
|
||||||
const [balanceDropdown, setbalanceValue] = useToggle(false);
|
const [balanceDropdown, setbalanceValue] = useToggle(false);
|
||||||
const [notificationDropdown, setNotificationValue] = useToggle(false);
|
const [notificationDropdown, setNotificationValue] = useToggle(false);
|
||||||
const [userProfileDropdown, setProfileDropdown] = useToggle(false);
|
const [userProfileDropdown, setProfileDropdown] = useToggle(false);
|
||||||
@@ -436,11 +439,11 @@ export default function Header({ logoutModalHandler, sidebarHandler }) {
|
|||||||
</div>
|
</div>
|
||||||
<div className="lg:block hidden">
|
<div className="lg:block hidden">
|
||||||
<h1 className="text-xl font-bold text-dark-gray dark:text-white">
|
<h1 className="text-xl font-bold text-dark-gray dark:text-white">
|
||||||
Brokln Simons
|
{userInfo.firstname + ' ' + userInfo.lastname}
|
||||||
</h1>
|
</h1>
|
||||||
<p className="text-sm text-thin-light-gray">
|
{/* <p className="text-sm text-thin-light-gray">
|
||||||
@broklinslam_75
|
@broklinslam_75
|
||||||
</p>
|
</p> */}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
|
|||||||
@@ -2,7 +2,9 @@ import { Navigate, Outlet } from "react-router-dom";
|
|||||||
|
|
||||||
const AuthRoute = ({ redirectPath = "/login", children }) => {
|
const AuthRoute = ({ redirectPath = "/login", children }) => {
|
||||||
const isLogin = localStorage.getItem("email");
|
const isLogin = localStorage.getItem("email");
|
||||||
if (!isLogin) {
|
const profile = localStorage.getItem("profile")
|
||||||
|
|
||||||
|
if (!isLogin || !profile || (typeof JSON.parse(profile) == 'object' && JSON.parse(profile).firstname == undefined)) {
|
||||||
return <Navigate to={redirectPath} replace />;
|
return <Navigate to={redirectPath} replace />;
|
||||||
}
|
}
|
||||||
return children || <Outlet />;
|
return children || <Outlet />;
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
import { configureStore } from "@reduxjs/toolkit";
|
import { configureStore } from "@reduxjs/toolkit";
|
||||||
import drawerReducer from "./drawer";
|
import drawerReducer from "./drawer";
|
||||||
|
import userReducer from "./userInfo";
|
||||||
|
|
||||||
export default configureStore({
|
export default configureStore({
|
||||||
reducer: {
|
reducer: {
|
||||||
drawer: drawerReducer,
|
drawer: drawerReducer,
|
||||||
|
userInfo: userReducer,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
import { createSlice } from "@reduxjs/toolkit";
|
||||||
|
|
||||||
|
const initialState = {
|
||||||
|
userInfo: JSON.parse(localStorage.getItem("profile"))
|
||||||
|
};
|
||||||
|
|
||||||
|
export const userSlice = createSlice({
|
||||||
|
name: "user",
|
||||||
|
initialState,
|
||||||
|
reducers: {
|
||||||
|
updateUserInfo: (state,payload) => {
|
||||||
|
// eslint-disable-next-line no-param-reassign
|
||||||
|
state.userInfo = payload.payload
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
// Action creators are generated for each case reducer function
|
||||||
|
export const { updateUserInfo } = userSlice.actions;
|
||||||
|
|
||||||
|
export default userSlice.reducer;
|
||||||
Reference in New Issue
Block a user