diff --git a/app/javascript/App.jsx b/app/javascript/App.jsx
index 30fbd58805997a12e0c18ce044c3596ac75df3fb..c688a4cde5c156eb74d00db46d677114d4ebec82 100644
--- a/app/javascript/App.jsx
+++ b/app/javascript/App.jsx
@@ -1,6 +1,6 @@
 import React, { useEffect } from 'react';
 import { Container } from 'react-bootstrap';
-import { Outlet } from 'react-router-dom';
+import { Outlet, useLocation } from 'react-router-dom';
 import { Toaster } from 'react-hot-toast';
 import { useTranslation } from 'react-i18next';
 import Header from './components/shared_components/Header';
@@ -12,6 +12,7 @@ import BackgroundBuffer from './components/shared_components/BackgroundBuffer';
 export default function App() {
   const currentUser = useAuth();
   const pageHeight = currentUser?.signed_in ? 'regular-height' : 'no-header-height';
+  const location = useLocation();
 
   // //i18n
   const { i18n } = useTranslation();
@@ -29,7 +30,7 @@ export default function App() {
 
   return (
     <>
-      {currentUser?.signed_in && <Header /> }
+      {location.pathname !== '/' && currentUser?.signed_in && <Header /> }
       {currentUser?.verified && <BackgroundBuffer /> }
       <Container className={pageHeight}>
         <Outlet />
diff --git a/app/javascript/components/home/HomePage.jsx b/app/javascript/components/home/HomePage.jsx
index 57852a641febb8766812552374b1a23482db9543..39239f6a9c8d3d7fdf9ca5e0141832b09f8e06e6 100644
--- a/app/javascript/components/home/HomePage.jsx
+++ b/app/javascript/components/home/HomePage.jsx
@@ -1,17 +1,20 @@
 import React, { useEffect } from 'react';
 import { Card, Form } from 'react-bootstrap';
-import { useLocation, useSearchParams } from 'react-router-dom';
+import { useLocation, useNavigate, useSearchParams } from 'react-router-dom';
 import { useTranslation } from 'react-i18next';
 import Button from 'react-bootstrap/Button';
 import ButtonLink from '../shared_components/utilities/ButtonLink';
 import useEnv from '../../hooks/queries/env/useEnv';
 import Logo from '../shared_components/Logo';
 import useSiteSetting from '../../hooks/queries/site_settings/useSiteSetting';
+import { useAuth } from '../../contexts/auth/AuthProvider';
 
 export default function HomePage() {
   const { data: env } = useEnv();
   const { t } = useTranslation();
   const { search } = useLocation();
+  const currentUser = useAuth();
+  const navigate = useNavigate();
   const [searchParams] = useSearchParams();
   const inviteToken = searchParams.get('inviteToken');
   const { data: registrationMethod } = useSiteSetting('RegistrationMethod');
@@ -20,6 +23,18 @@ export default function HomePage() {
     document.cookie = `token=${inviteToken};path=/;`;
   }, [inviteToken]);
 
+  // redirect user to correct page based on signed in status and CreateRoom permission
+  useEffect(
+    () => {
+      if (!currentUser.stateChanging && currentUser.signed_in && currentUser.permissions.CreateRoom === 'true') {
+        navigate('/rooms');
+      } else if (!currentUser.stateChanging && currentUser.signed_in && currentUser.permissions.CreateRoom === 'false') {
+        navigate('/home');
+      }
+    },
+    [currentUser.signed_in],
+  );
+
   function showSignUp() {
     return registrationMethod !== 'invite' || !!inviteToken;
   }
diff --git a/app/javascript/contexts/auth/AuthProvider.jsx b/app/javascript/contexts/auth/AuthProvider.jsx
index 987289217f2ffd481766b51e86b96ce633ab74f7..1e3d9bf073020a0b8b2e281774fea98ceba360ee 100644
--- a/app/javascript/contexts/auth/AuthProvider.jsx
+++ b/app/javascript/contexts/auth/AuthProvider.jsx
@@ -27,6 +27,7 @@ export default function AuthProvider({ children }) {
     permissions: currentUser?.permissions,
     role: currentUser?.role,
     verified: currentUser?.verified,
+    stateChanging: false,
   };
 
   const memoizedCurrentUser = useMemo(() => user, [user]);
diff --git a/app/javascript/hooks/mutations/sessions/useDeleteSession.jsx b/app/javascript/hooks/mutations/sessions/useDeleteSession.jsx
index 8d06cc8923eb9dc7d46b684e05ceba2631a35858..6ea5c1ae197dbda2a3c1d7b7911d9a834ba5d52b 100644
--- a/app/javascript/hooks/mutations/sessions/useDeleteSession.jsx
+++ b/app/javascript/hooks/mutations/sessions/useDeleteSession.jsx
@@ -3,19 +3,23 @@ import { toast } from 'react-hot-toast';
 import { useNavigate } from 'react-router-dom';
 import { useTranslation } from 'react-i18next';
 import axios from '../../../helpers/Axios';
+import { useAuth } from '../../../contexts/auth/AuthProvider';
 
 export default function useDeleteSession() {
   const { t } = useTranslation();
   const queryClient = useQueryClient();
   const navigate = useNavigate();
+  const currentUser = useAuth();
 
   return useMutation(
     () => axios.delete('/sessions/signout.json'),
     {
       onSuccess: async () => {
-        await navigate('/');
+        currentUser.stateChanging = true;
         queryClient.refetchQueries('useSessions');
+        await navigate('/');
         toast.success(t('toast.success.session.signed_out'));
+        currentUser.stateChanging = false;
       },
       onError: () => {
         toast.error(t('toast.error.problem_completing_action'));