fixed remember me token issue
This commit is contained in:
parent
f381f034d3
commit
7f972d13c3
|
|
@ -13,7 +13,7 @@ const axiosConfig = axios.create({
|
|||
axiosConfig.defaults.params = {};
|
||||
axiosConfig.interceptors.request.use(
|
||||
(config) => {
|
||||
const tokenString = localStorage.getItem('token');
|
||||
const tokenString = localStorage.getItem('token') || sessionStorage.getItem('token');
|
||||
const token = tokenString !== null ? tokenString : '';
|
||||
if (token) {
|
||||
config.params['authToken'] = token;
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ import { FormattedMessage, useIntl } from 'react-intl';
|
|||
function ResetPassword() {
|
||||
const [username, setUsername] = useState('');
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [rememberMe, setRememberMe] = useState(false);
|
||||
const [open, setOpen] = useState(false);
|
||||
const intl = useIntl();
|
||||
const theme = useTheme();
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ import { FormattedMessage, useIntl } from 'react-intl';
|
|||
function SetNewPassword() {
|
||||
const [username, setUsername] = useState('');
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [rememberMe, setRememberMe] = useState(false);
|
||||
const [open, setOpen] = useState(false);
|
||||
const intl = useIntl();
|
||||
const theme = useTheme();
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@ import LockOutlinedIcon from '@mui/icons-material/LockOutlined';
|
|||
import Link from '@mui/material/Link';
|
||||
import inescologo from 'src/Resources/Logo.svg';
|
||||
import { axiosConfigWithoutToken } from 'src/Resources/axiosConfig';
|
||||
import Cookies from 'universal-cookie';
|
||||
import { UserContext } from 'src/contexts/userContext';
|
||||
import { TokenContext } from 'src/contexts/tokenContext';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
|
|
@ -54,7 +53,6 @@ function Login() {
|
|||
const { currentUser, setUser, removeUser } = context;
|
||||
const tokencontext = useContext(TokenContext);
|
||||
const { token, setNewToken, removeToken } = tokencontext;
|
||||
const cookies = new Cookies();
|
||||
|
||||
const handleUsernameChange = (event: React.ChangeEvent<HTMLInputElement>) => {
|
||||
setUsername(event.target.value);
|
||||
|
|
@ -80,19 +78,14 @@ function Login() {
|
|||
if (response.data && response.data.token) {
|
||||
setLoading(false);
|
||||
|
||||
setNewToken(response.data.token);
|
||||
setUser(response.data.user);
|
||||
setNewToken(response.data.token, rememberMe);
|
||||
setUser(response.data.user, rememberMe);
|
||||
|
||||
setAccessToSalimax(response.data.accessToSalimax);
|
||||
setAccessToSalidomo(response.data.accessToSalidomo);
|
||||
setAccessToSodiohome(response.data.accessToSodioHome);
|
||||
setAccessToSodistore(response.data.accessToSodistoreMax);
|
||||
setAccessToSodistoreGrid(response.data.accessToSodistoreGrid);
|
||||
|
||||
if (rememberMe) {
|
||||
cookies.set('rememberedUsername', username, { path: '/' });
|
||||
cookies.set('rememberedPassword', password, { path: '/' });
|
||||
}
|
||||
if (response.data.accessToSalimax) {
|
||||
navigate(routes.installations);
|
||||
} else if (response.data.accessToSalidomo) {
|
||||
|
|
|
|||
|
|
@ -132,7 +132,7 @@ const InstallationsContextProvider = ({
|
|||
socket.current.close();
|
||||
socket.current = null;
|
||||
}
|
||||
const tokenString = localStorage.getItem('token');
|
||||
const tokenString = localStorage.getItem('token') || sessionStorage.getItem('token');
|
||||
const token = tokenString !== null ? tokenString : '';
|
||||
const urlWithToken = `wss://monitor.inesco.energy/api/CreateWebSocket?authToken=${token}`;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import {createContext, ReactNode, useState} from 'react';
|
|||
// Define the shape of the context
|
||||
interface TokenContextType {
|
||||
token?: string | null;
|
||||
setNewToken: (new_token: string) => void;
|
||||
setNewToken: (new_token: string, rememberMe?: boolean) => void;
|
||||
removeToken: () => void;
|
||||
}
|
||||
|
||||
|
|
@ -12,20 +12,29 @@ export const TokenContext = createContext<TokenContextType | undefined>(
|
|||
undefined
|
||||
);
|
||||
|
||||
const getStoredToken = (): string | null => {
|
||||
// Check localStorage first (rememberMe was checked), then sessionStorage
|
||||
return localStorage.getItem('token') || sessionStorage.getItem('token');
|
||||
};
|
||||
|
||||
// Create a UserContextProvider component
|
||||
export const TokenContextProvider = ({ children }: { children: ReactNode }) => {
|
||||
const searchParams = new URLSearchParams(location.search);
|
||||
const tokenId = parseInt(searchParams.get('authToken'));
|
||||
//Initialize context state with a "null" user
|
||||
const [token, setToken] = useState(localStorage.getItem('token'));
|
||||
const [token, setToken] = useState(getStoredToken);
|
||||
|
||||
const saveToken = (new_token: string) => {
|
||||
const saveToken = (new_token: string, rememberMe = false) => {
|
||||
setToken(new_token);
|
||||
localStorage.setItem('token', new_token);
|
||||
if (rememberMe) {
|
||||
localStorage.setItem('token', new_token);
|
||||
sessionStorage.removeItem('token');
|
||||
} else {
|
||||
sessionStorage.setItem('token', new_token);
|
||||
localStorage.removeItem('token');
|
||||
}
|
||||
};
|
||||
|
||||
const deleteToken = () => {
|
||||
localStorage.removeItem('token');
|
||||
sessionStorage.removeItem('token');
|
||||
setToken(null);
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import {InnovEnergyUser} from '../interfaces/UserTypes';
|
|||
// Define the shape of the context
|
||||
interface UserContextType {
|
||||
currentUser?: InnovEnergyUser;
|
||||
setUser: (user: InnovEnergyUser) => void;
|
||||
setUser: (user: InnovEnergyUser, rememberMe?: boolean) => void;
|
||||
removeUser: () => void;
|
||||
}
|
||||
|
||||
|
|
@ -13,20 +13,26 @@ export const UserContext = createContext<UserContextType | undefined>(
|
|||
undefined
|
||||
);
|
||||
|
||||
const getStoredUser = (): InnovEnergyUser | null => {
|
||||
const data = localStorage.getItem('currentUser') || sessionStorage.getItem('currentUser');
|
||||
return data ? JSON.parse(data) : null;
|
||||
};
|
||||
|
||||
// Create a UserContextProvider component
|
||||
export const UserContextProvider = ({ children }: { children: ReactNode }) => {
|
||||
//Initialize context state with a "null" user
|
||||
const [currentUser, setUser] = useState<InnovEnergyUser>(
|
||||
JSON.parse(localStorage.getItem('currentUser'))
|
||||
);
|
||||
const [currentUser, setUser] = useState<InnovEnergyUser>(getStoredUser);
|
||||
|
||||
const saveUser = (new_user: InnovEnergyUser) => {
|
||||
const saveUser = (new_user: InnovEnergyUser, rememberMe?: boolean) => {
|
||||
setUser(new_user);
|
||||
localStorage.setItem('currentUser', JSON.stringify(new_user));
|
||||
const storage = rememberMe !== undefined
|
||||
? (rememberMe ? localStorage : sessionStorage)
|
||||
: (localStorage.getItem('currentUser') ? localStorage : sessionStorage);
|
||||
storage.setItem('currentUser', JSON.stringify(new_user));
|
||||
};
|
||||
|
||||
const deleteUser = () => {
|
||||
localStorage.removeItem('currentUser');
|
||||
sessionStorage.removeItem('currentUser');
|
||||
};
|
||||
|
||||
return (
|
||||
|
|
|
|||
Loading…
Reference in New Issue