diff --git a/adminfront/src/features/tenants/routes/TenantSchemaPage.tsx b/adminfront/src/features/tenants/routes/TenantSchemaPage.tsx index c81854b7..17ff2bdf 100644 --- a/adminfront/src/features/tenants/routes/TenantSchemaPage.tsx +++ b/adminfront/src/features/tenants/routes/TenantSchemaPage.tsx @@ -34,6 +34,7 @@ type SchemaField = { adminOnly: boolean; validation?: string; unsigned?: boolean; + isLoginId?: boolean; }; function createFieldId() { @@ -96,6 +97,8 @@ export function TenantSchemaPage() { useEffect(() => { const rawSchema = tenantQuery.data?.config?.userSchema; + const loginIdField = tenantQuery.data?.config?.loginIdField; + if (Array.isArray(rawSchema)) { setFields( rawSchema.map((field) => ({ @@ -115,19 +118,23 @@ export function TenantSchemaPage() { validation: typeof field?.validation === "string" ? field.validation : "", unsigned: Boolean(field?.unsigned), + isLoginId: field?.key === loginIdField, })), ); } }, [tenantQuery.data]); const updateMutation = useMutation({ - mutationFn: (newFields: SchemaField[]) => - updateTenant(tenantId, { + mutationFn: (newFields: SchemaField[]) => { + const loginIdField = newFields.find((f) => f.isLoginId)?.key || ""; + return updateTenant(tenantId, { config: { ...tenantQuery.data?.config, userSchema: newFields, + loginIdField: loginIdField, }, - }), + }); + }, onSuccess: () => { queryClient.invalidateQueries({ queryKey: ["tenant", tenantId] }); toast.success( @@ -334,6 +341,26 @@ export function TenantSchemaPage() { )} + {(field.type === "number" || field.type === "float") && (