-
-
-
- OAuth2/OIDC Configuration
-
-
- Configure the OAuth2/OIDC provider
- endpoints and credentials
-
-
-
-
-
-
-
-
- Important Information
-
-
- After creating the identity
- provider, you will need to configure
- the callback URL in your identity
- provider's settings. The callback
- URL will be provided after
- successful creation.
-
-
-
-
-
-
-
-
- Token Configuration
-
-
- Configure how to extract user
- information from the ID token
-
-
-
-
-
(
+
+
+ Client Secret
+
+
+
+
+
+ The OAuth2 client secret
+ from your identity
+ provider
+
+
+
)}
- >
-
-
-
- About JMESPath
-
-
- The paths below use JMESPath
- syntax to extract values
- from the ID token.
-
- Learn more about
- JMESPath{" "}
-
-
-
-
+ />
- (
-
-
- Identifier Path
-
-
-
-
-
- The JMESPath to the
- user identifier in
- the ID token
-
-
-
- )}
- />
+ (
+
+
+ Authorization URL
+
+
+
+
+
+ The OAuth2 authorization
+ endpoint URL
+
+
+
+ )}
+ />
- (
-
-
- Email Path
- (Optional)
-
-
-
-
-
- The JMESPath to the
- user's email in the
- ID token
-
-
-
- )}
- />
+ (
+
+
+ Token URL
+
+
+
+
+
+ The OAuth2 token
+ endpoint URL
+
+
+
+ )}
+ />
+
+
- (
-
-
- Name Path (Optional)
-
-
-
-
-
- The JMESPath to the
- user's name in the
- ID token
-
-
-
- )}
- />
+
+
+
+ Important Information
+
+
+ After creating the identity provider,
+ you will need to configure the callback
+ URL in your identity provider's
+ settings. The callback URL will be
+ provided after successful creation.
+
+
+
+
- (
-
-
- Scopes
-
-
-
-
-
- Space-separated list
- of OAuth2 scopes to
- request
-
-
-
- )}
- />
-
-
-
-
-
- >
+
+
+
+ Token Configuration
+
+
+ Configure how to extract user information
+ from the ID token
+
+
+
+
+
+
+
+
+ About JMESPath
+
+
+ The paths below use JMESPath
+ syntax to extract values from
+ the ID token.
+
+ Learn more about JMESPath{" "}
+
+
+
+
+
+ (
+
+
+ Identifier Path
+
+
+
+
+
+ The JMESPath to the user
+ identifier in the ID
+ token
+
+
+
+ )}
+ />
+
+ (
+
+
+ Email Path (Optional)
+
+
+
+
+
+ The JMESPath to the
+ user's email in the ID
+ token
+
+
+
+ )}
+ />
+
+ (
+
+
+ Name Path (Optional)
+
+
+
+
+
+ The JMESPath to the
+ user's name in the ID
+ token
+
+
+
+ )}
+ />
+
+ (
+
+
+ Scopes
+
+
+
+
+
+ Space-separated list of
+ OAuth2 scopes to request
+
+
+
+ )}
+ />
+
+
+
+
+
)}
diff --git a/src/app/admin/users/page.tsx b/src/app/admin/users/page.tsx
index 877d1494..6e2290cb 100644
--- a/src/app/admin/users/page.tsx
+++ b/src/app/admin/users/page.tsx
@@ -4,6 +4,8 @@ import { AxiosResponse } from "axios";
import SettingsSectionTitle from "@app/components/SettingsSectionTitle";
import { AdminListUsersResponse } from "@server/routers/user/adminListUsers";
import UsersTable, { GlobalUserRow } from "./AdminUsersTable";
+import { Alert, AlertDescription, AlertTitle } from "@app/components/ui/alert";
+import { InfoIcon } from "lucide-react";
type PageProps = {
params: Promise<{ orgId: string }>;
@@ -43,6 +45,13 @@ export default async function UsersPage(props: PageProps) {
title="Manage All Users"
description="View and manage all users in the system"
/>
+
+
+ About User Management
+
+ This table displays all root user objects in the system. Each user may belong to multiple organizations. Removing a user from an organization does not delete their root user object - they will remain in the system. To completely remove a user from the system, you must delete their root user object using the delete action in this table.
+
+
>
);
diff --git a/src/components/Layout.tsx b/src/components/Layout.tsx
index ae95d4c6..870d9b64 100644
--- a/src/components/Layout.tsx
+++ b/src/components/Layout.tsx
@@ -22,6 +22,7 @@ import { useEnvContext } from "@app/hooks/useEnvContext";
import { Breadcrumbs } from "@app/components/Breadcrumbs";
import Link from "next/link";
import { usePathname } from "next/navigation";
+import { useUserContext } from "@app/hooks/useUserContext";
interface LayoutProps {
children: React.ReactNode;
@@ -57,6 +58,7 @@ export function Layout({
const { env } = useEnvContext();
const pathname = usePathname();
const isAdminPage = pathname?.startsWith("/admin");
+ const { user } = useUserContext();
return (