|
|
|
@ -42,6 +42,7 @@ import { |
|
|
|
} from 'requests' |
|
|
|
} from 'requests' |
|
|
|
|
|
|
|
|
|
|
|
import { userManager } from '../config' |
|
|
|
import { userManager } from '../config' |
|
|
|
|
|
|
|
// eslint-disable-next-line
|
|
|
|
import { needCheckNewDeviсe } from '../helpers' |
|
|
|
import { needCheckNewDeviсe } from '../helpers' |
|
|
|
|
|
|
|
|
|
|
|
export const useAuth = () => { |
|
|
|
export const useAuth = () => { |
|
|
|
@ -219,6 +220,7 @@ export const useAuth = () => { |
|
|
|
}) |
|
|
|
}) |
|
|
|
}, [logout]) |
|
|
|
}, [logout]) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// eslint-disable-next-line
|
|
|
|
const checkNewDevice = useCallback(async () => { |
|
|
|
const checkNewDevice = useCallback(async () => { |
|
|
|
const loadedUser = await userManager.getUser() |
|
|
|
const loadedUser = await userManager.getUser() |
|
|
|
if (!loadedUser) return |
|
|
|
if (!loadedUser) return |
|
|
|
@ -228,25 +230,25 @@ export const useAuth = () => { |
|
|
|
}) |
|
|
|
}) |
|
|
|
}, [reChekNewDevice]) |
|
|
|
}, [reChekNewDevice]) |
|
|
|
|
|
|
|
|
|
|
|
useEffect(() => { |
|
|
|
// useEffect(() => {
|
|
|
|
if (!needCheckNewDeviсe && !user) return undefined |
|
|
|
// if (!needCheckNewDeviсe && !user) return undefined
|
|
|
|
const startCheckDevice = setInterval(checkNewDevice, 20000) |
|
|
|
// const startCheckDevice = setInterval(checkNewDevice, 20000)
|
|
|
|
isNewDeviceLogin && clearInterval(startCheckDevice) |
|
|
|
// isNewDeviceLogin && clearInterval(startCheckDevice)
|
|
|
|
return () => clearInterval(startCheckDevice) |
|
|
|
// return () => clearInterval(startCheckDevice)
|
|
|
|
|
|
|
|
//
|
|
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
|
|
// // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
|
|
}, [ |
|
|
|
// }, [
|
|
|
|
checkNewDevice, |
|
|
|
// checkNewDevice,
|
|
|
|
isNewDeviceLogin, |
|
|
|
// isNewDeviceLogin,
|
|
|
|
setIsNewDeviceLogin, |
|
|
|
// setIsNewDeviceLogin,
|
|
|
|
]) |
|
|
|
// ])
|
|
|
|
|
|
|
|
|
|
|
|
useEffect(() => { |
|
|
|
useEffect(() => { |
|
|
|
// попытаемся обновить токен используя refresh_token
|
|
|
|
// попытаемся обновить токен используя refresh_token
|
|
|
|
const tryRenewToken = () => { |
|
|
|
const tryRenewToken = () => { |
|
|
|
const tokenLastUpdated = Number(localStorage.getItem('token_updated')) |
|
|
|
const tokenLastUpdated = Number(localStorage.getItem('token_updated')) |
|
|
|
// предотвращаем одновременное обновление токена в разных окнах/вкладках
|
|
|
|
// предотвращаем одновременное обновление токена в разных окнах/вкладках
|
|
|
|
const needRenewToken = Date.now() - tokenLastUpdated >= userManager.settings.clockSkew! * 1e3 |
|
|
|
const needRenewToken = Date.now() - tokenLastUpdated >= 2 * 1e3 |
|
|
|
|
|
|
|
|
|
|
|
if (!needRenewToken) return |
|
|
|
if (!needRenewToken) return |
|
|
|
|
|
|
|
|
|
|
|
@ -267,6 +269,14 @@ export const useAuth = () => { |
|
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
|
|
}, [logout]) |
|
|
|
}, [logout]) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
useEffect(() => { |
|
|
|
|
|
|
|
// событие срабатывает после получения токена(первый
|
|
|
|
|
|
|
|
// логин и обновление токена)
|
|
|
|
|
|
|
|
userManager.events.addUserLoaded(storeUser) |
|
|
|
|
|
|
|
return () => userManager.events.removeUserLoaded(storeUser) |
|
|
|
|
|
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
|
|
|
|
|
|
}, [userManager, storeUser]) |
|
|
|
|
|
|
|
|
|
|
|
const fetchUserInfo = useCallback(async () => { |
|
|
|
const fetchUserInfo = useCallback(async () => { |
|
|
|
try { |
|
|
|
try { |
|
|
|
const userInfoFetched = await getUserInfo() |
|
|
|
const userInfoFetched = await getUserInfo() |
|
|
|
|