From 2b933617196e52ac034d190bdeccfecbf96b53d2 Mon Sep 17 00:00:00 2001 From: Brian Manifold Date: Wed, 24 Jul 2024 01:09:59 -0400 Subject: [PATCH] refactor(portal): Temporarily remove time based policy conditions (#5981) This PR temporarily removes the time based policy conditions. This is only until #5861 is finished. Closes #5979 --- .../web/lib/web/live/policies/components.ex | 217 +++++++++--------- .../web/test/web/live/policies/new_test.exs | 57 ----- website/src/app/kb/deploy/policies/readme.mdx | 18 -- 3 files changed, 108 insertions(+), 184 deletions(-) diff --git a/elixir/apps/web/lib/web/live/policies/components.ex b/elixir/apps/web/lib/web/live/policies/components.ex index 955b17ad1..8a1f823af 100644 --- a/elixir/apps/web/lib/web/live/policies/components.ex +++ b/elixir/apps/web/lib/web/live/policies/components.ex @@ -256,11 +256,6 @@ defmodule Web.Policies.Components do providers={@providers} disabled={@policy_conditions_enabled? == false} /> - <.current_utc_datetime_condition_form - form={@form} - timezone={@timezone} - disabled={@policy_conditions_enabled? == false} - /> """ @@ -523,93 +518,95 @@ defmodule Web.Policies.Components do """ end - defp current_utc_datetime_condition_form(assigns) do - assigns = assign_new(assigns, :days_of_week, fn -> @days_of_week end) + # TODO: Uncomment this once policy time conditions are finished + # defp current_utc_datetime_condition_form(assigns) do + # assigns = assign_new(assigns, :days_of_week, fn -> @days_of_week end) - ~H""" -
- <% condition_form = find_condition_form(@form[:conditions], :current_utc_datetime) %> + # ~H""" + #
+ # <% condition_form = find_condition_form(@form[:conditions], :current_utc_datetime) %> - <.input - type="hidden" - field={condition_form[:property]} - name="policy[conditions][current_utc_datetime][property]" - id="policy_conditions_current_utc_datetime_property" - value="current_utc_datetime" - /> + # <.input + # type="hidden" + # field={condition_form[:property]} + # name="policy[conditions][current_utc_datetime][property]" + # id="policy_conditions_current_utc_datetime_property" + # value="current_utc_datetime" + # /> - <.input - type="hidden" - name="policy[conditions][current_utc_datetime][operator]" - id="policy_conditions_current_utc_datetime_operator" - field={condition_form[:operator]} - value={:is_in_day_of_week_time_ranges} - /> + # <.input + # type="hidden" + # name="policy[conditions][current_utc_datetime][operator]" + # id="policy_conditions_current_utc_datetime_operator" + # field={condition_form[:operator]} + # value={:is_in_day_of_week_time_ranges} + # /> -
JS.toggle_class("bg-neutral-50") - |> JS.toggle_class("hero-chevron-down", - to: "#policy_conditions_current_utc_datetime_chevron" - ) - |> JS.toggle_class("hero-chevron-up", - to: "#policy_conditions_current_utc_datetime_chevron" - ) - } - > - - - <.icon name="hero-clock" class="w-5 h-5 mr-2" /> Current time - - - <.icon - id="policy_conditions_current_utc_datetime_chevron" - name="hero-chevron-down" - class="w-5 h-5" - /> - - -
+ #
JS.toggle_class("bg-neutral-50") + # |> JS.toggle_class("hero-chevron-down", + # to: "#policy_conditions_current_utc_datetime_chevron" + # ) + # |> JS.toggle_class("hero-chevron-up", + # to: "#policy_conditions_current_utc_datetime_chevron" + # ) + # } + # > + # + # + # <.icon name="hero-clock" class="w-5 h-5 mr-2" /> Current time + # + # + # <.icon + # id="policy_conditions_current_utc_datetime_chevron" + # name="hero-chevron-down" + # class="w-5 h-5" + # /> + # + # + #
-
-

- Restrict access based on the current time of the day in 24hr format. Multiple time ranges per day are supported. -

-
- <.input - type="select" - label="Timezone" - name="policy[conditions][current_utc_datetime][timezone]" - id="policy_conditions_current_utc_datetime_timezone" - field={condition_form[:timezone]} - options={Tzdata.zone_list()} - disabled={@disabled} - value={condition_form[:timezone].value || @timezone} - /> + #
+ #

+ # Restrict access based on the current time of the day in 24hr format. + # Multiple time ranges per day are supported. + #

+ #
+ # <.input + # type="select" + # label="Timezone" + # name="policy[conditions][current_utc_datetime][timezone]" + # id="policy_conditions_current_utc_datetime_timezone" + # field={condition_form[:timezone]} + # options={Tzdata.zone_list()} + # disabled={@disabled} + # value={condition_form[:timezone].value || @timezone} + # /> -
- <.current_utc_datetime_condition_day_input - :for={{code, _name} <- @days_of_week} - disabled={@disabled} - condition_form={condition_form} - day={code} - /> -
-
-
-
- """ - end + #
+ # <.current_utc_datetime_condition_day_input + # :for={{code, _name} <- @days_of_week} + # disabled={@disabled} + # condition_form={condition_form} + # day={code} + # /> + #
+ # + # + #
+ # """ + # end defp find_condition_form(form_field, property) do condition_form = @@ -623,30 +620,32 @@ defmodule Web.Policies.Components do condition_form || to_form(%{}) end - defp current_utc_datetime_condition_day_input(assigns) do - ~H""" - <.input - type="text" - label={day_of_week_name(@day)} - field={@condition_form[:values]} - name={"policy[conditions][current_utc_datetime][values][#{@day}]"} - id={"policy_conditions_current_utc_datetime_values_#{@day}"} - placeholder="E.g. 9:00-12:00, 13:00-17:00" - value={get_datetime_range_for_day_of_week(@day, @condition_form[:values])} - disabled={@disabled} - value_index={day_of_week_index(@day)} - /> - """ - end + # TODO: Uncomment this once policy time conditions are finished + # defp current_utc_datetime_condition_day_input(assigns) do + # ~H""" + # <.input + # type="text" + # label={day_of_week_name(@day)} + # field={@condition_form[:values]} + # name={"policy[conditions][current_utc_datetime][values][#{@day}]"} + # id={"policy_conditions_current_utc_datetime_values_#{@day}"} + # placeholder="E.g. 9:00-12:00, 13:00-17:00" + # value={get_datetime_range_for_day_of_week(@day, @condition_form[:values])} + # disabled={@disabled} + # value_index={day_of_week_index(@day)} + # /> + # """ + # end - defp get_datetime_range_for_day_of_week(day, form_field) do - Enum.find_value(form_field.value || [], fn dow_time_ranges -> - case String.split(dow_time_ranges, "/", parts: 3) do - [^day, ranges, _timezone] -> ranges - _other -> false - end - end) - end + # TODO: Uncomment this once policy time conditions are finished + # defp get_datetime_range_for_day_of_week(day, form_field) do + # Enum.find_value(form_field.value || [], fn dow_time_ranges -> + # case String.split(dow_time_ranges, "/", parts: 3) do + # [^day, ranges, _timezone] -> ranges + # _other -> false + # end + # end) + # end defp condition_operator_options(property) do Domain.Policies.Condition.Changeset.valid_operators_for_property(property) diff --git a/elixir/apps/web/test/web/live/policies/new_test.exs b/elixir/apps/web/test/web/live/policies/new_test.exs index 4347bdeea..a4f032a76 100644 --- a/elixir/apps/web/test/web/live/policies/new_test.exs +++ b/elixir/apps/web/test/web/live/policies/new_test.exs @@ -60,16 +60,6 @@ defmodule Web.Live.Policies.NewTest do assert find_inputs(form) == [ "policy[actor_group_id]", - "policy[conditions][current_utc_datetime][operator]", - "policy[conditions][current_utc_datetime][property]", - "policy[conditions][current_utc_datetime][timezone]", - "policy[conditions][current_utc_datetime][values][F]", - "policy[conditions][current_utc_datetime][values][M]", - "policy[conditions][current_utc_datetime][values][R]", - "policy[conditions][current_utc_datetime][values][S]", - "policy[conditions][current_utc_datetime][values][T]", - "policy[conditions][current_utc_datetime][values][U]", - "policy[conditions][current_utc_datetime][values][W]", "policy[conditions][provider_id][operator]", "policy[conditions][provider_id][property]", "policy[conditions][provider_id][values][]", @@ -99,16 +89,6 @@ defmodule Web.Live.Policies.NewTest do assert find_inputs(form) == [ "policy[actor_group_id]", - "policy[conditions][current_utc_datetime][operator]", - "policy[conditions][current_utc_datetime][property]", - "policy[conditions][current_utc_datetime][timezone]", - "policy[conditions][current_utc_datetime][values][F]", - "policy[conditions][current_utc_datetime][values][M]", - "policy[conditions][current_utc_datetime][values][R]", - "policy[conditions][current_utc_datetime][values][S]", - "policy[conditions][current_utc_datetime][values][T]", - "policy[conditions][current_utc_datetime][values][U]", - "policy[conditions][current_utc_datetime][values][W]", "policy[conditions][provider_id][operator]", "policy[conditions][provider_id][property]", "policy[conditions][provider_id][values][]", @@ -149,16 +129,6 @@ defmodule Web.Live.Policies.NewTest do assert find_inputs(form) == [ "policy[actor_group_id]", - "policy[conditions][current_utc_datetime][operator]", - "policy[conditions][current_utc_datetime][property]", - "policy[conditions][current_utc_datetime][timezone]", - "policy[conditions][current_utc_datetime][values][F]", - "policy[conditions][current_utc_datetime][values][M]", - "policy[conditions][current_utc_datetime][values][R]", - "policy[conditions][current_utc_datetime][values][S]", - "policy[conditions][current_utc_datetime][values][T]", - "policy[conditions][current_utc_datetime][values][U]", - "policy[conditions][current_utc_datetime][values][W]", "policy[conditions][provider_id][operator]", "policy[conditions][provider_id][property]", "policy[conditions][provider_id][values][]", @@ -283,20 +253,6 @@ defmodule Web.Live.Policies.NewTest do actor_group_id: group.id, resource_id: resource.id, conditions: %{ - current_utc_datetime: %{ - property: "current_utc_datetime", - operator: "is_in_day_of_week_time_ranges", - timezone: "US/Pacific", - values: %{ - M: "true", - T: "", - W: "true", - R: "", - F: "", - S: "10:00:00-15:00:00", - U: "23:00:00-23:59:59" - } - }, provider_id: %{ property: "provider_id", operator: "is_in", @@ -328,19 +284,6 @@ defmodule Web.Live.Policies.NewTest do assert policy.resource_id == resource.id assert policy.conditions == [ - %Domain.Policies.Condition{ - property: :current_utc_datetime, - operator: :is_in_day_of_week_time_ranges, - values: [ - "M/true/US/Pacific", - "T//US/Pacific", - "W/true/US/Pacific", - "R//US/Pacific", - "F//US/Pacific", - "S/10:00:00-15:00:00/US/Pacific", - "U/23:00:00-23:59:59/US/Pacific" - ] - }, %Domain.Policies.Condition{ property: :provider_id, operator: :is_in, diff --git a/website/src/app/kb/deploy/policies/readme.mdx b/website/src/app/kb/deploy/policies/readme.mdx index 8366c57d3..9208fe4f4 100644 --- a/website/src/app/kb/deploy/policies/readme.mdx +++ b/website/src/app/kb/deploy/policies/readme.mdx @@ -69,24 +69,6 @@ Restrict access to a specific IP address or range of Client IP addresses. Restrict access based on the authentication provider that was used to authenticate the Client. -### Time of day - -Time of day - -Restrict access to certain time windows throughout the week based on the 24hr -time and specified time zone. - -The time zone determines the offset used when determining whether to allow -access for a particular Client. For example, if you specify a time window of -`08:00-17:00` and time zone of `Eastern`, Clients in the `Pacific` timezone 3 -hours behind will be allowed access from `05:00-14:00` Eastern time. - Next: Install Clients