Skip to main content
Glama
Arize-ai

@arizeai/phoenix-mcp

Official
by Arize-ai
NewUserDialog.tsx5.18 kB
import { useCallback } from "react"; import { graphql, useMutation } from "react-relay"; import { Dialog, Modal, ModalOverlay, Tab, TabList, TabPanel, Tabs, } from "@phoenix/components"; import { DialogCloseButton, DialogContent, DialogHeader, DialogTitle, } from "@phoenix/components/dialog"; import { LDAPUserForm, LDAPUserFormParams, } from "@phoenix/components/settings/LDAPUserForm"; import { OAuthUserForm, OAuthUserFormParams, } from "@phoenix/components/settings/OAuthUserForm"; import { UserForm, UserFormParams, } from "@phoenix/components/settings/UserForm"; import { NewUserDialogMutation } from "./__generated__/NewUserDialogMutation.graphql"; export function NewUserDialog({ onNewUserCreated, onNewUserCreationError, onDismiss, }: { onNewUserCreated: (username: string) => void; onNewUserCreationError: (error: Error) => void; onDismiss: () => void; }) { const [commit, isCommitting] = useMutation<NewUserDialogMutation>(graphql` mutation NewUserDialogMutation($input: CreateUserInput!) { createUser(input: $input) { user { id email username } } } `); const onSubmit = useCallback( (data: UserFormParams) => { commit({ variables: { input: { email: data.email, username: data.username, password: data.password, role: data.role, authMethod: "LOCAL", sendWelcomeEmail: true, }, }, onCompleted: (response) => { onNewUserCreated(response.createUser.user.username); }, onError: (error) => { onNewUserCreationError(error); }, }); }, [commit, onNewUserCreated, onNewUserCreationError] ); const onSubmitOauthUser = useCallback( (data: OAuthUserFormParams) => { commit({ variables: { input: { email: data.email, username: data.username, role: data.role, authMethod: "OAUTH2", sendWelcomeEmail: true, }, }, onCompleted: (response) => { onNewUserCreated(response.createUser.user.username); }, onError: (error) => { onNewUserCreationError(error); }, }); }, [commit, onNewUserCreated, onNewUserCreationError] ); const onSubmitLdapUser = useCallback( (data: LDAPUserFormParams) => { commit({ variables: { input: { email: data.email, username: data.username, role: data.role, authMethod: "LDAP", sendWelcomeEmail: true, }, }, onCompleted: (response) => { onNewUserCreated(response.createUser.user.username); }, onError: (error) => { onNewUserCreationError(error); }, }); }, [commit, onNewUserCreated, onNewUserCreationError] ); // Determine which tabs are available const showLocalTab = !window.Config.basicAuthDisabled; const showOAuth2Tab = window.Config.oAuth2Idps.length > 0; // Hide LDAP tab when manual user creation is disabled (no email attribute configured) const showLDAPTab = window.Config.ldapManualUserCreationEnabled; // Smart default tab selection const defaultTab = showLocalTab ? "local" : showOAuth2Tab ? "oauth2" : showLDAPTab ? "ldap" : "local"; // Fallback (should never happen due to backend validation) return ( <ModalOverlay isOpen={true} onOpenChange={(isOpen) => { if (!isOpen) { onDismiss(); } }} > <Modal> <Dialog> <DialogContent> <DialogHeader> <DialogTitle>Add User</DialogTitle> <DialogCloseButton /> </DialogHeader> <Tabs defaultSelectedKey={defaultTab}> <TabList> {showLocalTab && <Tab id="local">Local</Tab>} {showOAuth2Tab && <Tab id="oauth2">OAuth2</Tab>} {showLDAPTab && <Tab id="ldap">LDAP</Tab>} </TabList> {showLocalTab && ( <TabPanel id="local"> <UserForm key="user-form" onSubmit={onSubmit} isSubmitting={isCommitting} /> </TabPanel> )} {showOAuth2Tab && ( <TabPanel id="oauth2"> <OAuthUserForm key="oauth-form" onSubmit={onSubmitOauthUser} isSubmitting={isCommitting} /> </TabPanel> )} {showLDAPTab && ( <TabPanel id="ldap"> <LDAPUserForm key="ldap-form" onSubmit={onSubmitLdapUser} isSubmitting={isCommitting} /> </TabPanel> )} </Tabs> </DialogContent> </Dialog> </Modal> </ModalOverlay> ); }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Arize-ai/phoenix'

If you have feedback or need assistance with the MCP directory API, please join our Discord server