diff --git a/src/components/ruleTemplate/TemplateRulesManager.tsx b/src/components/ruleTemplate/TemplateRulesManager.tsx index 540e38ce..1a9b4b7e 100644 --- a/src/components/ruleTemplate/TemplateRulesManager.tsx +++ b/src/components/ruleTemplate/TemplateRulesManager.tsx @@ -76,6 +76,17 @@ export function TemplateRulesManager({ templateId, orgId }: TemplateRulesManager const [loading, setLoading] = useState(true); const [addingRule, setAddingRule] = useState(false); + const RuleAction = { + ACCEPT: t('alwaysAllow'), + DROP: t('alwaysDeny') + } as const; + + const RuleMatch = { + PATH: t('path'), + IP: "IP", + CIDR: t('ipAddressRange') + } as const; + const form = useForm>({ resolver: zodResolver(addRuleSchema), defaultValues: { @@ -183,72 +194,93 @@ export function TemplateRulesManager({ templateId, orgId }: TemplateRulesManager const columns: ColumnDef[] = [ { accessorKey: "priority", - header: ({ column }) => ( - - ), + header: ({ column }) => { + return ( + + ); + }, cell: ({ row }) => ( + className="w-[75px]" + type="number" + onBlur={(e) => { + const parsed = z.coerce + .number() + .int() + .optional() + .safeParse(e.target.value); + + if (!parsed.data) { + toast({ + variant: "destructive", + title: t('rulesErrorInvalidIpAddress'), + description: t('rulesErrorInvalidPriorityDescription') + }); + return; + } + updateRule(row.original.ruleId, { - priority: parseInt(e.target.value, 10) - }) - } + priority: parsed.data + }); + }} /> ) }, { accessorKey: "action", - header: "Action", + header: t('rulesAction'), cell: ({ row }) => ( ) }, { accessorKey: "match", - header: "Match", + header: t('rulesMatchType'), cell: ({ row }) => ( ) }, { accessorKey: "value", - header: "Value", + header: t('value'), cell: ({ row }) => ( ( ( ) }