diff --git a/site/src/pages/CreateUserPage/CreateUserPage.tsx b/site/src/pages/CreateUserPage/CreateUserPage.tsx
index bec3e7c637e05..4e42442649384 100644
--- a/site/src/pages/CreateUserPage/CreateUserPage.tsx
+++ b/site/src/pages/CreateUserPage/CreateUserPage.tsx
@@ -32,10 +32,10 @@ export const CreateUserPage: FC = () => {
onSubmit={async (user) => {
await createUserMutation.mutateAsync(user);
displaySuccess("Successfully created user.");
- navigate("/users");
+ navigate("..", { relative: "path" });
}}
onCancel={() => {
- navigate("/users");
+ navigate("..", { relative: "path" });
}}
isLoading={createUserMutation.isLoading}
organizationId={organizationId}
diff --git a/site/src/pages/ManagementSettingsPage/Sidebar.tsx b/site/src/pages/ManagementSettingsPage/Sidebar.tsx
index cc5fbb5d97e1c..fe34a6088a01b 100644
--- a/site/src/pages/ManagementSettingsPage/Sidebar.tsx
+++ b/site/src/pages/ManagementSettingsPage/Sidebar.tsx
@@ -9,6 +9,7 @@ import { Sidebar as BaseSidebar } from "components/Sidebar/Sidebar";
import { Stack } from "components/Stack/Stack";
import { UserAvatar } from "components/UserAvatar/UserAvatar";
import { type ClassName, useClassName } from "hooks/useClassName";
+import { USERS_LINK } from "modules/navigation";
import { useOrganizationSettings } from "./ManagementSettingsLayout";
export const Sidebar: FC = () => {
@@ -77,7 +78,9 @@ const DeploymentSettingsNavigation: FC = () => {
Observability
- Users
+
+ Users
+
)}
diff --git a/site/src/pages/UsersPage/UsersLayout.tsx b/site/src/pages/UsersPage/UsersLayout.tsx
index ac11e008e436d..12ab40d409e15 100644
--- a/site/src/pages/UsersPage/UsersLayout.tsx
+++ b/site/src/pages/UsersPage/UsersLayout.tsx
@@ -27,6 +27,8 @@ export const UsersLayout: FC = () => {
const location = useLocation();
const activeTab = location.pathname.endsWith("groups") ? "groups" : "users";
+ const isMultiOrg = experiments.includes("multi-organization");
+
return (
<>
@@ -59,7 +61,7 @@ export const UsersLayout: FC = () => {
- {!experiments.includes("multi-organization") && (
+ {!isMultiOrg && (
{
const queryClient = useQueryClient();
const navigate = useNavigate();
-
+ const location = useLocation();
const searchParamsResult = useSearchParams();
- const { entitlements, organizationId } = useDashboard();
+ const { entitlements, experiments, organizationId } = useDashboard();
const [searchParams] = searchParamsResult;
+ const isMultiOrg = experiments.includes("multi-organization");
const groupsByUserIdQuery = useQuery(groupsByUserId(organizationId));
const authMethodsQuery = useQuery(authMethods());
const { permissions, user: me } = useAuthenticated();
- const { updateUsers: canEditUsers, viewDeploymentValues } = permissions;
+ const {
+ createUser: canCreateUser,
+ updateUsers: canEditUsers,
+ viewDeploymentValues,
+ } = permissions;
const rolesQuery = useQuery(roles());
const { data: deploymentValues } = useQuery({
...deploymentConfig(),
@@ -93,6 +103,13 @@ const UsersPage: FC = () => {
authMethodsQuery.isLoading ||
groupsByUserIdQuery.isLoading;
+ if (
+ experiments.includes("multi-organization") &&
+ location.pathname !== "/deployment/users"
+ ) {
+ return ;
+ }
+
return (
<>
@@ -147,6 +164,8 @@ const UsersPage: FC = () => {
menus: { status: statusMenu },
}}
usersQuery={usersQuery}
+ isMultiOrg={isMultiOrg}
+ canCreateUser={canCreateUser}
/>
= ({
@@ -55,9 +63,33 @@ export const UsersPageView: FC = ({
authMethods,
groupsByUserId,
usersQuery,
+ isMultiOrg,
+ canCreateUser,
}) => {
+ const navigate = useNavigate();
+
return (
<>
+ {isMultiOrg && (
+
+ {canCreateUser && (
+
+ )}
+ >
+ }
+ >
+ Users
+
+ )}
+
diff --git a/site/src/pages/UsersPage/UsersTable/UsersTable.tsx b/site/src/pages/UsersPage/UsersTable/UsersTable.tsx
index c27de3e05588c..f8b8b825e2b87 100644
--- a/site/src/pages/UsersPage/UsersTable/UsersTable.tsx
+++ b/site/src/pages/UsersPage/UsersTable/UsersTable.tsx
@@ -69,7 +69,7 @@ export const UsersTable: FC = ({
- {Language.usernameLabel}
+ {Language.usernameLabel}
@@ -78,15 +78,15 @@ export const UsersTable: FC = ({
-
+
{Language.groupsLabel}
- {Language.loginTypeLabel}
- {Language.statusLabel}
+ {Language.loginTypeLabel}
+ {Language.statusLabel}
{/* 1% is a trick to make the table cell width fit the content */}
{canEditUsers && }
diff --git a/site/src/router.tsx b/site/src/router.tsx
index 36525099574f9..c66a98b8a9a6e 100644
--- a/site/src/router.tsx
+++ b/site/src/router.tsx
@@ -407,6 +407,8 @@ export const router = createBrowserRouter(
} />
+ } />
+ } />
}>