From f42c013f33359cd8a4da228a14c8c3467608e44c Mon Sep 17 00:00:00 2001 From: Fred KISSIE Date: Wed, 4 Mar 2026 17:41:55 +0100 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- messages/en-US.json | 1 + server/routers/policy/getResourcePolicy.ts | 5 +- .../EditPolicyAuthMethodsSectionForm.tsx | 2 +- .../resource-policy/EditPolicyForm.tsx | 11 ++-- .../EditPolicyRulesSectionForm.tsx | 66 ++++--------------- 5 files changed, 25 insertions(+), 60 deletions(-) diff --git a/messages/en-US.json b/messages/en-US.json index 9fa9748cc..1ad1d89be 100644 --- a/messages/en-US.json +++ b/messages/en-US.json @@ -660,6 +660,7 @@ "policyErrorUpdateMessageDescription": "An unexpected error occurred", "policyCreatedSuccess": "Resource policy succesfully created", "policyUpdatedSuccess": "Resource policy succesfully updated", + "authMethodsSave": "Save auth methods", "resourceErrorCreate": "Error creating resource", "resourceErrorCreateDescription": "An error occurred when creating the resource", "resourceErrorCreateMessage": "Error creating resource:", diff --git a/server/routers/policy/getResourcePolicy.ts b/server/routers/policy/getResourcePolicy.ts index 124f67718..02c370199 100644 --- a/server/routers/policy/getResourcePolicy.ts +++ b/server/routers/policy/getResourcePolicy.ts @@ -118,7 +118,10 @@ async function query(params: z.infer) { .where(eq(rolePolicies.resourcePolicyId, res.resourcePolicyId)); const policyEmailWhiteList = await db - .select() + .select({ + whiteListId: resourcePolicyWhiteList.whitelistId, + email: resourcePolicyWhiteList.email + }) .from(resourcePolicyWhiteList) .where( eq(resourcePolicyWhiteList.resourcePolicyId, res.resourcePolicyId) diff --git a/src/components/resource-policy/EditPolicyAuthMethodsSectionForm.tsx b/src/components/resource-policy/EditPolicyAuthMethodsSectionForm.tsx index 8a7efce1d..57f37c958 100644 --- a/src/components/resource-policy/EditPolicyAuthMethodsSectionForm.tsx +++ b/src/components/resource-policy/EditPolicyAuthMethodsSectionForm.tsx @@ -646,7 +646,7 @@ export function EditPolicyAuthMethodsSectionForm() { loading={isSubmitting} disabled={isSubmitting} > - {t("saveSettings")} + {t("authMethodsSave")} diff --git a/src/components/resource-policy/EditPolicyForm.tsx b/src/components/resource-policy/EditPolicyForm.tsx index 4647c84f1..e913474a9 100644 --- a/src/components/resource-policy/EditPolicyForm.tsx +++ b/src/components/resource-policy/EditPolicyForm.tsx @@ -22,6 +22,7 @@ import { EditPolicyAuthMethodsSectionForm } from "./EditPolicyAuthMethodsSection import { EditPolicyNameSectionForm } from "./EditPolicyNameSectionForm"; import { EditPolicyUsersRolesSectionForm } from "./EditPolicyUserRolesSectionForm"; import { EditPolicyOtpEmailSectionForm } from "./EditPolicyOtpEmailSectionForm"; +import { EditPolicyRulesSectionForm } from "./EditPolicyRulesSectionForm"; // ─── EditPolicyForm ───────────────────────────────────────────────────────── @@ -112,12 +113,10 @@ export function EditPolicyForm({ hidePolicyNameForm }: EditPolicyFormProps) { emailEnabled={env.email.emailEnabled} /> - {/* - */} + ); } diff --git a/src/components/resource-policy/EditPolicyRulesSectionForm.tsx b/src/components/resource-policy/EditPolicyRulesSectionForm.tsx index 692cbf463..f8f044740 100644 --- a/src/components/resource-policy/EditPolicyRulesSectionForm.tsx +++ b/src/components/resource-policy/EditPolicyRulesSectionForm.tsx @@ -1,40 +1,22 @@ "use client"; import { - SettingsContainer, SettingsSection, SettingsSectionBody, SettingsSectionDescription, - SettingsSectionForm, SettingsSectionHeader, SettingsSectionTitle } from "@app/components/Settings"; -import { useEnvContext } from "@app/hooks/useEnvContext"; -import { useOrgContext } from "@app/hooks/useOrgContext"; -import { usePaidStatus } from "@app/hooks/usePaidStatus"; - -import { getUserDisplayName } from "@app/lib/getUserDisplayName"; -import { orgQueries } from "@app/lib/queries"; import { zodResolver } from "@hookform/resolvers/zod"; -import { build } from "@server/build"; -import { tierMatrix } from "@server/lib/billing/tierMatrix"; -import { UserType } from "@server/types/UserTypes"; -import { useQuery } from "@tanstack/react-query"; import { useTranslations } from "next-intl"; import z from "zod"; -import { type PolicyFormValues, createPolicySchema } from "."; import { toast } from "@app/hooks/useToast"; -import { createApiClient, formatAxiosError } from "@app/lib/api"; -import { orgs, type ResourcePolicy } from "@server/db"; -import type { AxiosResponse } from "axios"; -import { useRouter } from "next/navigation"; +import { createPolicySchema, type PolicyFormValues } from "."; import { SwitchInput } from "@app/components/SwitchInput"; -import { Tag, TagInput } from "@app/components/tags/tag-input"; -import { Alert, AlertDescription, AlertTitle } from "@app/components/ui/alert"; import { Button } from "@app/components/ui/button"; import { Command, @@ -47,7 +29,6 @@ import { import { Form, FormControl, - FormDescription, FormField, FormItem, FormLabel, @@ -76,21 +57,6 @@ import { TableHeader, TableRow } from "@app/components/ui/table"; -import { - Credenza, - CredenzaBody, - CredenzaClose, - CredenzaContent, - CredenzaDescription, - CredenzaFooter, - CredenzaHeader, - CredenzaTitle -} from "@app/components/Credenza"; -import { - InputOTP, - InputOTPGroup, - InputOTPSlot -} from "@app/components/ui/input-otp"; import { MAJOR_ASNS } from "@server/db/asns"; import { COUNTRIES } from "@server/db/countries"; @@ -108,21 +74,10 @@ import { getSortedRowModel, useReactTable } from "@tanstack/react-table"; -import { - ArrowUpDown, - Binary, - Bot, - Check, - ChevronsUpDown, - InfoIcon, - Key, - Plus -} from "lucide-react"; +import { ArrowUpDown, Check, ChevronsUpDown, Plus } from "lucide-react"; -import { useCallback, useMemo, useState, useActionState } from "react"; -import { UseFormReturn, useForm, useWatch } from "react-hook-form"; -import { useResourcePolicyContext } from "@app/providers/ResourcePolicyProvider"; -import { cn } from "@app/lib/cn"; +import { useCallback, useMemo, useState } from "react"; +import { UseFormReturn, useForm } from "react-hook-form"; // ─── PolicyRulesSection ─────────────────────────────────────────────────────── @@ -145,17 +100,24 @@ type LocalRule = { }; type PolicyRulesSectionProps = { - form: UseFormReturn; isMaxmindAvailable: boolean; isMaxmindAsnAvailable: boolean; }; -export function PolicyRulesSection({ - form, +export function EditPolicyRulesSectionForm({ isMaxmindAvailable, isMaxmindAsnAvailable }: PolicyRulesSectionProps) { const t = useTranslations(); + + const form = useForm({ + resolver: zodResolver( + createPolicySchema.pick({ + rules: true, + applyRules: true + }) + ) + }); const [isExpanded, setIsExpanded] = useState(false); const [rules, setRules] = useState([]); const [rulesEnabled, setRulesEnabled] = useState(false);