+
+ <.input type="hidden" name={"#{@form.name}[tcp][protocol]"} value="tcp" />
+
+ <.input
+ title="Restrict traffic to TCP traffic"
+ type="checkbox"
+ field={@forms_by_protocol[:tcp]}
+ name={"#{@form.name}[tcp][enabled]"}
+ checked={Map.has_key?(@forms_by_protocol, :tcp)}
+ value="true"
+ disabled={!@traffic_filters_enabled?}
+ label="TCP"
+ />
+
+
+
+ <% ports = (@forms_by_protocol[:tcp] || %{ports: %{value: []}})[:ports] %>
+ <.input
+ type="text"
+ inline_errors={true}
+ field={ports}
+ name={"#{@form.name}[tcp][ports]"}
+ value={Enum.any?(ports.value) && pretty_print_ports(ports.value)}
+ disabled={!@traffic_filters_enabled? || !Map.has_key?(@forms_by_protocol, :tcp)}
+ placeholder="E.g. 80, 443, 8080-8090"
+ class="w-96"
+ />
+
+ List of comma-separated port range(s), Matches all ports if empty.
+
+
+
+
+
+ <.input type="hidden" name={"#{@form.name}[udp][protocol]"} value="udp" />
+
+ <.input
+ type="checkbox"
+ field={@forms_by_protocol[:udp]}
+ name={"#{@form.name}[udp][enabled]"}
+ checked={Map.has_key?(@forms_by_protocol, :udp)}
+ value="true"
+ disabled={!@traffic_filters_enabled?}
+ label="UDP"
+ />
+
+
+
+ <% ports = (@forms_by_protocol[:udp] || %{ports: %{value: []}})[:ports] %>
+ <.input
+ type="text"
+ inline_errors={true}
+ field={ports}
+ name={"#{@form.name}[udp][ports]"}
+ value={Enum.any?(ports.value) && pretty_print_ports(ports.value)}
+ disabled={!@traffic_filters_enabled? || !Map.has_key?(@forms_by_protocol, :udp)}
+ placeholder="E.g. 53, 60000-61000"
+ class="w-96"
+ />
+
+ List of comma-separated port range(s), Matches all ports if empty.
+
+
+
+
+
<.input type="hidden" name={"#{@form.name}[icmp][protocol]"} value="icmp" />
-
-
- <.input
- title="Allow ICMP traffic"
- type="checkbox"
- field={@forms_by_protocol[:icmp]}
- name={"#{@form.name}[icmp][enabled]"}
- checked={Map.has_key?(@forms_by_protocol, :icmp)}
- value="true"
- disabled={!@traffic_filters_enabled?}
- label="ICMP"
- />
-
-
-
-
-
- <.input type="hidden" name={"#{@form.name}[tcp][protocol]"} value="tcp" />
-
-
-
- <.input
- title="Restrict traffic to TCP traffic"
- type="checkbox"
- field={@forms_by_protocol[:tcp]}
- name={"#{@form.name}[tcp][enabled]"}
- checked={Map.has_key?(@forms_by_protocol, :tcp)}
- value="true"
- disabled={!@traffic_filters_enabled?}
- label="TCP"
- />
-
-
-
- <% ports = (@forms_by_protocol[:tcp] || %{ports: %{value: []}})[:ports] %>
- <.input
- type="text"
- inline_errors={true}
- field={ports}
- name={"#{@form.name}[tcp][ports]"}
- value={Enum.any?(ports.value) && pretty_print_ports(ports.value)}
- disabled={!@traffic_filters_enabled? || !Map.has_key?(@forms_by_protocol, :tcp)}
- placeholder="Comma-separated port range(s), eg. 433, 80, 90-99. Matches all ports if empty."
- />
-
-
-
-
-
- <.input type="hidden" name={"#{@form.name}[udp][protocol]"} value="udp" />
-
-
-
- <.input
- type="checkbox"
- field={@forms_by_protocol[:udp]}
- name={"#{@form.name}[udp][enabled]"}
- checked={Map.has_key?(@forms_by_protocol, :udp)}
- value="true"
- disabled={!@traffic_filters_enabled?}
- label="UDP"
- />
-
-
-
- <% ports = (@forms_by_protocol[:udp] || %{ports: %{value: []}})[:ports] %>
- <.input
- type="text"
- inline_errors={true}
- field={ports}
- name={"#{@form.name}[udp][ports]"}
- value={Enum.any?(ports.value) && pretty_print_ports(ports.value)}
- disabled={!@traffic_filters_enabled? || !Map.has_key?(@forms_by_protocol, :udp)}
- placeholder="Comma-separated port range(s), eg. 433, 80, 90-99. Matches all ports if empty."
- />
-
+
+ <.input
+ title="Allow ICMP traffic"
+ type="checkbox"
+ field={@forms_by_protocol[:icmp]}
+ name={"#{@form.name}[icmp][enabled]"}
+ checked={Map.has_key?(@forms_by_protocol, :icmp)}
+ value="true"
+ disabled={!@traffic_filters_enabled?}
+ label="ICMP"
+ />
diff --git a/elixir/apps/web/lib/web/live/resources/new.ex b/elixir/apps/web/lib/web/live/resources/new.ex
index 838a854bc..0d7dc9eac 100644
--- a/elixir/apps/web/lib/web/live/resources/new.ex
+++ b/elixir/apps/web/lib/web/live/resources/new.ex
@@ -37,44 +37,86 @@ defmodule Web.Resources.New do
Resource details
<.form for={@form} class="space-y-4 lg:space-y-6" phx-submit="submit" phx-change="change">
-
+
Type
-
-
-
+
+
+
<.input
id="resource-type--dns"
- type="radio"
+ type="radio_button_group"
field={@form[:type]}
value="dns"
- label="DNS"
checked={@form[:type].value == :dns}
required
/>
-
-
+
+
+
+ <.icon name="hero-globe-alt" class="w-5 h-5 mr-1" /> DNS
+
+
+ Manage access to an application or service by DNS address.
+
+
+
+
+
<.input
id="resource-type--ip"
- type="radio"
+ type="radio_button_group"
field={@form[:type]}
value="ip"
- label="IP"
checked={@form[:type].value == :ip}
required
/>
-
-
+
+
+
+ <.icon name="hero-server" class="w-5 h-5 mr-1" /> IP
+
+
+ Manage access to a specific host by IP address.
+
+
+
+
+
<.input
id="resource-type--cidr"
- type="radio"
+ type="radio_button_group"
field={@form[:type]}
value="cidr"
- label="CIDR"
checked={@form[:type].value == :cidr}
required
/>
-
-
+
+
+
+ <.icon name="hero-server-stack" class="w-5 h-5 mr-1" /> CIDR
+
+
+ Manage access to a network, VPC or subnet by CIDR address.
+
+
+
+
+
@@ -87,7 +129,7 @@ defmodule Web.Resources.New do
@form[:type].value == :dns -> "gitlab.company.com"
@form[:type].value == :cidr -> "10.0.0.0/24"
@form[:type].value == :ip -> "10.3.2.1"
- true -> "Please select a Type from the options first"
+ true -> "First select a type above"
end
}
class={is_nil(@form[:type].value) && "cursor-not-allowed"}