mirror of
https://github.com/ansible/awx.git
synced 2026-05-10 02:47:36 -02:30
Signed-off-by: Sasa993 <jovicic.sasa@hotmail.com> Co-authored-by: Sasa Jovicic <sjovicic@anexia-it.com>
This commit is contained in:
@@ -75,6 +75,7 @@ function SessionProvider({ children }) {
|
|||||||
const [sessionCountdown, setSessionCountdown] = useState(0);
|
const [sessionCountdown, setSessionCountdown] = useState(0);
|
||||||
const [authRedirectTo, setAuthRedirectTo] = useState('/');
|
const [authRedirectTo, setAuthRedirectTo] = useState('/');
|
||||||
const [isUserBeingLoggedOut, setIsUserBeingLoggedOut] = useState(false);
|
const [isUserBeingLoggedOut, setIsUserBeingLoggedOut] = useState(false);
|
||||||
|
const [isRedirectLinkReceived, setIsRedirectLinkReceived] = useState(false);
|
||||||
|
|
||||||
const {
|
const {
|
||||||
request: fetchLoginRedirectOverride,
|
request: fetchLoginRedirectOverride,
|
||||||
@@ -99,6 +100,7 @@ function SessionProvider({ children }) {
|
|||||||
|
|
||||||
const logout = useCallback(async () => {
|
const logout = useCallback(async () => {
|
||||||
setIsUserBeingLoggedOut(true);
|
setIsUserBeingLoggedOut(true);
|
||||||
|
setIsRedirectLinkReceived(false);
|
||||||
if (!isSessionExpired.current) {
|
if (!isSessionExpired.current) {
|
||||||
setAuthRedirectTo('/logout');
|
setAuthRedirectTo('/logout');
|
||||||
window.localStorage.setItem(SESSION_USER_ID, null);
|
window.localStorage.setItem(SESSION_USER_ID, null);
|
||||||
@@ -112,6 +114,18 @@ function SessionProvider({ children }) {
|
|||||||
return <Redirect to="/login" />;
|
return <Redirect to="/login" />;
|
||||||
}, [setSessionTimeout, setSessionCountdown]);
|
}, [setSessionTimeout, setSessionCountdown]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const unlisten = history.listen((location, action) => {
|
||||||
|
if (action === 'POP') {
|
||||||
|
setIsRedirectLinkReceived(true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
unlisten(); // ensure that the listener is removed when the component unmounts
|
||||||
|
};
|
||||||
|
}, [history]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!isAuthenticated(document.cookie)) {
|
if (!isAuthenticated(document.cookie)) {
|
||||||
return () => {};
|
return () => {};
|
||||||
@@ -176,6 +190,8 @@ function SessionProvider({ children }) {
|
|||||||
logout,
|
logout,
|
||||||
sessionCountdown,
|
sessionCountdown,
|
||||||
setAuthRedirectTo,
|
setAuthRedirectTo,
|
||||||
|
isRedirectLinkReceived,
|
||||||
|
setIsRedirectLinkReceived,
|
||||||
}),
|
}),
|
||||||
[
|
[
|
||||||
authRedirectTo,
|
authRedirectTo,
|
||||||
@@ -186,6 +202,8 @@ function SessionProvider({ children }) {
|
|||||||
logout,
|
logout,
|
||||||
sessionCountdown,
|
sessionCountdown,
|
||||||
setAuthRedirectTo,
|
setAuthRedirectTo,
|
||||||
|
isRedirectLinkReceived,
|
||||||
|
setIsRedirectLinkReceived,
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -45,7 +45,8 @@ const Login = styled(PFLogin)`
|
|||||||
|
|
||||||
function AWXLogin({ alt, isAuthenticated }) {
|
function AWXLogin({ alt, isAuthenticated }) {
|
||||||
const [userId, setUserId] = useState(null);
|
const [userId, setUserId] = useState(null);
|
||||||
const { authRedirectTo, isSessionExpired } = useSession();
|
const { authRedirectTo, isSessionExpired, isRedirectLinkReceived } =
|
||||||
|
useSession();
|
||||||
const isNewUser = useRef(true);
|
const isNewUser = useRef(true);
|
||||||
const hasVerifiedUser = useRef(false);
|
const hasVerifiedUser = useRef(false);
|
||||||
|
|
||||||
@@ -179,7 +180,8 @@ function AWXLogin({ alt, isAuthenticated }) {
|
|||||||
return <LoadingSpinner />;
|
return <LoadingSpinner />;
|
||||||
}
|
}
|
||||||
if (userId && hasVerifiedUser.current) {
|
if (userId && hasVerifiedUser.current) {
|
||||||
const redirect = isNewUser.current ? '/home' : authRedirectTo;
|
const redirect =
|
||||||
|
isNewUser.current && !isRedirectLinkReceived ? '/home' : authRedirectTo;
|
||||||
|
|
||||||
return <Redirect to={redirect} />;
|
return <Redirect to={redirect} />;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user