diff --git a/app/client/cypress/integration/Smoke_TestSuite/Auth/Redirects__spec.js b/app/client/cypress/integration/Smoke_TestSuite/Auth/Redirects__spec.js
new file mode 100644
index 0000000000..62f9c1290c
--- /dev/null
+++ b/app/client/cypress/integration/Smoke_TestSuite/Auth/Redirects__spec.js
@@ -0,0 +1,8 @@
+describe("Check for redirects associated with auth pages", function() {
+ it("Should redirect away from auth pages if already logged in", function() {
+ const loginPageRoute = "/user/login";
+ cy.visit(loginPageRoute);
+ cy.wait(2000);
+ cy.location("pathname").should("not.equal", loginPageRoute);
+ });
+});
diff --git a/app/client/cypress/support/commands.js b/app/client/cypress/support/commands.js
index 6aa4c12948..82286df1ca 100644
--- a/app/client/cypress/support/commands.js
+++ b/app/client/cypress/support/commands.js
@@ -287,6 +287,11 @@ Cypress.Commands.add("DeleteApp", (appName) => {
});
Cypress.Commands.add("LogintoApp", (uname, pword) => {
+ cy.window()
+ .its("store")
+ .invoke("dispatch", { type: "LOGOUT_USER_INIT" });
+ cy.wait("@postLogout");
+
cy.visit("/user/login");
cy.get(loginPage.username).should("be.visible");
cy.get(loginPage.username).type(uname);
diff --git a/app/client/src/pages/UserAuth/index.tsx b/app/client/src/pages/UserAuth/index.tsx
index 2a9aa79df2..40bb5bf268 100644
--- a/app/client/src/pages/UserAuth/index.tsx
+++ b/app/client/src/pages/UserAuth/index.tsx
@@ -10,6 +10,8 @@ import FooterLinks from "./FooterLinks";
import * as Sentry from "@sentry/react";
const SentryRoute = Sentry.withSentryRouting(Route);
+import requiresAuthHOC from "./requiresAuthHOC";
+
export const UserAuth = () => {
const { path } = useRouteMatch();
const location = useLocation();
@@ -40,4 +42,4 @@ export const UserAuth = () => {
);
};
-export default UserAuth;
+export default requiresAuthHOC(UserAuth);
diff --git a/app/client/src/pages/UserAuth/requiresAuthHOC.tsx b/app/client/src/pages/UserAuth/requiresAuthHOC.tsx
new file mode 100644
index 0000000000..24bf10dbe5
--- /dev/null
+++ b/app/client/src/pages/UserAuth/requiresAuthHOC.tsx
@@ -0,0 +1,22 @@
+import React from "react";
+import { useSelector } from "react-redux";
+import { Redirect } from "react-router-dom";
+
+import { getCurrentUser } from "selectors/usersSelectors";
+import { ANONYMOUS_USERNAME } from "constants/userConstants";
+import { APPLICATIONS_URL } from "constants/routes";
+
+const requiresAuthHOC = (Component: React.ComponentType) => {
+ const Wrapped = (props: any) => {
+ const user = useSelector(getCurrentUser);
+
+ if (user?.email && user?.email !== ANONYMOUS_USERNAME) {
+ return ;
+ }
+ return ;
+ };
+
+ return Wrapped;
+};
+
+export default requiresAuthHOC;