mirror of
https://github.com/outbackdingo/firezone.git
synced 2026-01-27 10:18:54 +00:00
refactor(portal): move policy events to WAL (#9521)
Moves all of the policy lifecycle events to be broadcasted from the WAL consumer. #### Test - [x] Enable policy - [x] Disable policy - [x] Delete policy - [x] Non-breaking change - [x] Breaking change Related: #6294 --------- Signed-off-by: Jamil <jamilbk@users.noreply.github.com>
This commit is contained in:
@@ -219,9 +219,8 @@ defmodule Web.Policies.Edit do
|
||||
|> maybe_drop_unsupported_conditions(socket)
|
||||
|
||||
case Policies.update_policy(socket.assigns.policy, params, socket.assigns.subject) do
|
||||
{:updated, updated_policy} ->
|
||||
{:noreply,
|
||||
push_navigate(socket, to: ~p"/#{socket.assigns.account}/policies/#{updated_policy}")}
|
||||
{:ok, policy} ->
|
||||
{:noreply, push_navigate(socket, to: ~p"/#{socket.assigns.account}/policies/#{policy}")}
|
||||
|
||||
{:error, changeset} ->
|
||||
{:noreply, assign(socket, form: to_form(changeset))}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
defmodule Web.Policies.Index do
|
||||
use Web, :live_view
|
||||
alias Domain.Policies
|
||||
alias Domain.{Events, Policies}
|
||||
|
||||
def mount(_params, _session, socket) do
|
||||
if connected?(socket) do
|
||||
:ok = Policies.subscribe_to_events_for_account(socket.assigns.account)
|
||||
:ok = Events.Hooks.Accounts.subscribe_to_policies(socket.assigns.account.id)
|
||||
end
|
||||
|
||||
socket =
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
defmodule Web.Policies.Show do
|
||||
use Web, :live_view
|
||||
import Web.Policies.Components
|
||||
alias Domain.{Accounts, Policies, Flows, Auth}
|
||||
alias Domain.{Accounts, Policies, Events, Flows, Auth}
|
||||
|
||||
def mount(%{"id" => id}, _session, socket) do
|
||||
with {:ok, policy} <-
|
||||
@@ -16,7 +16,7 @@ defmodule Web.Policies.Show do
|
||||
providers = Auth.all_active_providers_for_account!(socket.assigns.account)
|
||||
|
||||
if connected?(socket) do
|
||||
:ok = Policies.subscribe_to_events_for_policy(policy)
|
||||
:ok = Events.Hooks.Policies.subscribe(policy.id)
|
||||
end
|
||||
|
||||
socket =
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
defmodule Web.Live.Policies.IndexTest do
|
||||
use Web.ConnCase, async: true
|
||||
alias Domain.Events
|
||||
|
||||
setup do
|
||||
account = Fixtures.Accounts.create_account()
|
||||
@@ -92,7 +93,14 @@ defmodule Web.Live.Policies.IndexTest do
|
||||
refute html =~ "The table data has changed."
|
||||
refute html =~ "reload-btn"
|
||||
|
||||
Fixtures.Policies.create_policy(account: account, description: "foo bar")
|
||||
policy = Fixtures.Policies.create_policy(account: account, description: "foo bar")
|
||||
|
||||
Events.Hooks.Policies.on_insert(%{
|
||||
"id" => policy.id,
|
||||
"actor_group_id" => policy.actor_group_id,
|
||||
"resource_id" => policy.resource_id,
|
||||
"account_id" => account.id
|
||||
})
|
||||
|
||||
reload_btn =
|
||||
lv
|
||||
@@ -120,6 +128,17 @@ defmodule Web.Live.Policies.IndexTest do
|
||||
|
||||
Domain.Policies.delete_policy(policy, subject)
|
||||
|
||||
Events.Hooks.Policies.on_delete(%{
|
||||
"id" => policy.id,
|
||||
"actor_group_id" => policy.actor_group_id,
|
||||
"resource_id" => policy.resource_id,
|
||||
"account_id" => account.id
|
||||
})
|
||||
|
||||
# TODO: WAL
|
||||
# Remove this after direct broadcast
|
||||
Process.sleep(100)
|
||||
|
||||
reload_btn =
|
||||
lv
|
||||
|> element("#policies-reload-btn")
|
||||
|
||||
Reference in New Issue
Block a user