mirror of
https://github.com/outbackdingo/firezone.git
synced 2026-01-27 10:18:54 +00:00
refactor(portal): remove created_by_<identity/actor> columns (#9306)
Why: * Now that we have started using the `created_by_subject` field on various tables, we no longer need to keep the `created_by_<identity/actor>` fields. This will help remove a foreign key reference and will be one step closer to allowing us to hard delete data rather than soft deleting all data in order to keep foreign key references like these.
This commit is contained in:
@@ -42,8 +42,7 @@ defmodule API.ClientJSON do
|
||||
firebase_installation_id: client.firebase_installation_id,
|
||||
verified_at: client.verified_at,
|
||||
verified_by: client.verified_by,
|
||||
verified_by_actor_id: client.verified_by_actor_id,
|
||||
verified_by_identity_id: client.verified_by_identity_id,
|
||||
verified_by_subject: client.verified_by_subject,
|
||||
created_at: client.inserted_at,
|
||||
updated_at: client.updated_at
|
||||
}
|
||||
|
||||
@@ -85,13 +85,9 @@ defmodule API.Schemas.Client do
|
||||
description: "Client verification method",
|
||||
enum: [:system, :actor, :identity]
|
||||
},
|
||||
verified_by_actor_id: %Schema{
|
||||
type: :string,
|
||||
description: "Actor ID who verified the client"
|
||||
},
|
||||
verified_by_identity_id: %Schema{
|
||||
type: :string,
|
||||
description: "Identity ID who verified the client"
|
||||
verified_by_subject: %Schema{
|
||||
type: :object,
|
||||
description: "Actor Name and/or Identity email who verified the client"
|
||||
},
|
||||
created_at: %Schema{
|
||||
type: :string,
|
||||
@@ -220,8 +216,7 @@ defmodule API.Schemas.Client do
|
||||
"firebase_installation_id" => nil,
|
||||
"verified_at" => "2025-01-01T00:00:00Z",
|
||||
"verified_by" => "identity",
|
||||
"verified_by_actor_id" => nil,
|
||||
"verified_by_identity_id" => "6ecc106b-75c1-48a5-846c-14782180c1ff",
|
||||
"verified_by_subject" => %{"name" => "Foo", "email" => "foo@bar.com"},
|
||||
"created_at" => "2025-01-01T00:00:00Z",
|
||||
"updated_at" => "2025-01-01T00:00:00Z"
|
||||
}
|
||||
@@ -266,8 +261,7 @@ defmodule API.Schemas.Client do
|
||||
"firebase_installation_id" => nil,
|
||||
"verified_at" => "2025-01-01T00:00:00Z",
|
||||
"verified_by" => "identity",
|
||||
"verified_by_actor_id" => nil,
|
||||
"verified_by_identity_id" => "6ecc106b-75c1-48a5-846c-14782180c1ff",
|
||||
"verified_by_subject" => %{"name" => "Foo", "email" => "foo@bar.com"},
|
||||
"created_at" => "2025-01-01T00:00:00Z",
|
||||
"updated_at" => "2025-01-01T00:00:00Z"
|
||||
},
|
||||
@@ -293,8 +287,7 @@ defmodule API.Schemas.Client do
|
||||
"firebase_installation_id" => nil,
|
||||
"verified_at" => nil,
|
||||
"verified_by" => nil,
|
||||
"verified_by_actor_id" => nil,
|
||||
"verified_by_identity_id" => nil,
|
||||
"verified_by_subject" => %{"name" => "Foo", "email" => "foo@bar.com"},
|
||||
"created_at" => "2025-01-01T00:00:00Z",
|
||||
"updated_at" => "2025-01-01T00:00:00Z"
|
||||
}
|
||||
|
||||
@@ -152,8 +152,7 @@ defmodule API.ClientControllerTest do
|
||||
"updated_at" => client.updated_at && DateTime.to_iso8601(client.updated_at),
|
||||
"verified_at" => client.verified_at && DateTime.to_iso8601(client.verified_at),
|
||||
"verified_by" => client.verified_by,
|
||||
"verified_by_actor_id" => client.verified_by_actor_id,
|
||||
"verified_by_identity_id" => client.verified_by_identity_id
|
||||
"verified_by_subject" => client.verified_by_subject
|
||||
}
|
||||
}
|
||||
end
|
||||
@@ -210,8 +209,7 @@ defmodule API.ClientControllerTest do
|
||||
assert resp["data"]["id"] == client.id
|
||||
assert resp["data"]["verified_at"]
|
||||
assert resp["data"]["verified_by"]
|
||||
assert resp["data"]["verified_by_actor_id"]
|
||||
refute resp["data"]["verified_by_identity_id"]
|
||||
assert resp["data"]["verified_by_subject"]
|
||||
end
|
||||
end
|
||||
|
||||
@@ -233,8 +231,7 @@ defmodule API.ClientControllerTest do
|
||||
assert resp["data"]["id"] == client.id
|
||||
refute resp["data"]["verified_at"]
|
||||
refute resp["data"]["verified_by"]
|
||||
refute resp["data"]["verified_by_actor_id"]
|
||||
refute resp["data"]["verified_by_identity_id"]
|
||||
refute resp["data"]["verified_by_subject"]
|
||||
end
|
||||
end
|
||||
|
||||
@@ -285,8 +282,7 @@ defmodule API.ClientControllerTest do
|
||||
"updated_at" => client.updated_at && DateTime.to_iso8601(client.updated_at),
|
||||
"verified_at" => client.verified_at && DateTime.to_iso8601(client.verified_at),
|
||||
"verified_by" => client.verified_by,
|
||||
"verified_by_actor_id" => client.verified_by_actor_id,
|
||||
"verified_by_identity_id" => client.verified_by_identity_id
|
||||
"verified_by_subject" => client.verified_by_subject
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -22,8 +22,6 @@ defmodule Domain.Actors.Group do
|
||||
|
||||
field :created_by, Ecto.Enum, values: ~w[actor identity provider system]a
|
||||
field :created_by_subject, :map
|
||||
belongs_to :created_by_identity, Domain.Auth.Identity
|
||||
belongs_to :created_by_actor, Domain.Actors.Actor
|
||||
|
||||
belongs_to :account, Domain.Accounts.Account
|
||||
|
||||
|
||||
@@ -22,8 +22,6 @@ defmodule Domain.Auth.Identity do
|
||||
|
||||
field :created_by, Ecto.Enum, values: ~w[system provider identity]a
|
||||
field :created_by_subject, :map
|
||||
belongs_to :created_by_identity, Domain.Auth.Identity
|
||||
belongs_to :created_by_actor, Domain.Actors.Actor
|
||||
|
||||
has_many :clients, Domain.Clients.Client, where: [deleted_at: nil]
|
||||
|
||||
|
||||
@@ -19,8 +19,6 @@ defmodule Domain.Auth.Provider do
|
||||
|
||||
field :created_by, Ecto.Enum, values: ~w[system identity actor]a
|
||||
field :created_by_subject, :map
|
||||
belongs_to :created_by_identity, Domain.Auth.Identity
|
||||
belongs_to :created_by_actor, Domain.Actors.Actor
|
||||
|
||||
field :last_syncs_failed, :integer
|
||||
field :last_sync_error, :string
|
||||
|
||||
@@ -201,14 +201,6 @@ defmodule Domain.Clients do
|
||||
with: &Client.Changeset.verify(&1, subject),
|
||||
preload: [:online?]
|
||||
)
|
||||
|> case do
|
||||
{:ok, client} ->
|
||||
client = Repo.preload(client, [:verified_by_actor, :verified_by_identity])
|
||||
{:ok, client}
|
||||
|
||||
{:error, reason} ->
|
||||
{:error, reason}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -37,8 +37,6 @@ defmodule Domain.Clients.Client do
|
||||
field :verified_at, :utc_datetime_usec
|
||||
field :verified_by, Ecto.Enum, values: [:system, :actor, :identity]
|
||||
field :verified_by_subject, :map
|
||||
belongs_to :verified_by_actor, Domain.Actors.Actor
|
||||
belongs_to :verified_by_identity, Domain.Auth.Identity
|
||||
|
||||
field :deleted_at, :utc_datetime_usec
|
||||
timestamps()
|
||||
|
||||
@@ -79,7 +79,7 @@ defmodule Domain.Clients.Client.Changeset do
|
||||
clients,
|
||||
clients.verified_by
|
||||
),
|
||||
verified_by_actor_id:
|
||||
verified_by_subject:
|
||||
fragment(
|
||||
"""
|
||||
CASE WHEN (EXCLUDED.device_serial = ?.device_serial OR ?.device_serial IS NULL)
|
||||
@@ -98,28 +98,7 @@ defmodule Domain.Clients.Client.Changeset do
|
||||
clients,
|
||||
clients,
|
||||
clients,
|
||||
clients.verified_by_actor_id
|
||||
),
|
||||
verified_by_identity_id:
|
||||
fragment(
|
||||
"""
|
||||
CASE WHEN (EXCLUDED.device_serial = ?.device_serial OR ?.device_serial IS NULL)
|
||||
AND (EXCLUDED.device_uuid = ?.device_uuid OR ?.device_uuid IS NULL)
|
||||
AND (EXCLUDED.identifier_for_vendor = ?.identifier_for_vendor OR ?.identifier_for_vendor IS NULL)
|
||||
AND (EXCLUDED.firebase_installation_id = ?.firebase_installation_id OR ?.firebase_installation_id IS NULL)
|
||||
THEN ?
|
||||
ELSE NULL
|
||||
END
|
||||
""",
|
||||
clients,
|
||||
clients,
|
||||
clients,
|
||||
clients,
|
||||
clients,
|
||||
clients,
|
||||
clients,
|
||||
clients,
|
||||
clients.verified_by_identity_id
|
||||
clients.verified_by_subject
|
||||
)
|
||||
]
|
||||
)
|
||||
@@ -181,8 +160,6 @@ defmodule Domain.Clients.Client.Changeset do
|
||||
|> change()
|
||||
|> put_change(:verified_at, nil)
|
||||
|> put_change(:verified_by, nil)
|
||||
|> put_change(:verified_by_actor_id, nil)
|
||||
|> put_change(:verified_by_identity_id, nil)
|
||||
|> put_change(:verified_by_subject, nil)
|
||||
end
|
||||
|
||||
|
||||
@@ -17,8 +17,6 @@ defmodule Domain.Gateways.Group do
|
||||
|
||||
field :created_by, Ecto.Enum, values: ~w[actor identity system]a
|
||||
field :created_by_subject, :map
|
||||
belongs_to :created_by_identity, Domain.Auth.Identity
|
||||
belongs_to :created_by_actor, Domain.Actors.Actor
|
||||
|
||||
field :deleted_at, :utc_datetime_usec
|
||||
timestamps()
|
||||
|
||||
@@ -14,8 +14,6 @@ defmodule Domain.Policies.Policy do
|
||||
|
||||
field :created_by, Ecto.Enum, values: ~w[actor identity]a
|
||||
field :created_by_subject, :map
|
||||
belongs_to :created_by_identity, Domain.Auth.Identity
|
||||
belongs_to :created_by_actor, Domain.Actors.Actor
|
||||
|
||||
belongs_to :replaced_by_policy, Domain.Policies.Policy
|
||||
has_one :replaces_policy, Domain.Policies.Policy, foreign_key: :replaced_by_policy_id
|
||||
|
||||
@@ -10,8 +10,6 @@ defmodule Domain.Relays.Group do
|
||||
|
||||
field :created_by, Ecto.Enum, values: ~w[system identity]a
|
||||
field :created_by_subject, :map
|
||||
belongs_to :created_by_identity, Domain.Auth.Identity
|
||||
belongs_to :created_by_actor, Domain.Actors.Actor
|
||||
|
||||
field :deleted_at, :utc_datetime_usec
|
||||
timestamps()
|
||||
|
||||
@@ -163,7 +163,6 @@ defmodule Domain.Repo.Changeset do
|
||||
changeset
|
||||
|> put_default_value(field, :actor)
|
||||
|> put_default_value(:"#{field}_subject", %{"name" => subject.actor.name, "email" => nil})
|
||||
|> put_default_value(:"#{field}_actor_id", subject.actor.id)
|
||||
end
|
||||
|
||||
def put_subject_trail(changeset, field, %Domain.Auth.Subject{} = subject) do
|
||||
@@ -173,15 +172,11 @@ defmodule Domain.Repo.Changeset do
|
||||
"name" => subject.actor.name,
|
||||
"email" => subject.identity.email
|
||||
})
|
||||
|> put_default_value(:"#{field}_actor_id", subject.actor.id)
|
||||
|> put_default_value(:"#{field}_identity_id", subject.identity.id)
|
||||
end
|
||||
|
||||
def reset_created_by(changeset) do
|
||||
changeset
|
||||
|> put_change(:created_by, nil)
|
||||
|> put_change(:created_by_identity_id, nil)
|
||||
|> put_change(:created_by_actor_id, nil)
|
||||
|> put_change(:created_by_subject, nil)
|
||||
end
|
||||
|
||||
|
||||
@@ -8,8 +8,6 @@ defmodule Domain.Resources.Connection do
|
||||
|
||||
field :created_by, Ecto.Enum, values: ~w[actor identity system]a
|
||||
field :created_by_subject, :map
|
||||
belongs_to :created_by_identity, Domain.Auth.Identity
|
||||
belongs_to :created_by_actor, Domain.Actors.Actor
|
||||
|
||||
belongs_to :account, Domain.Accounts.Account
|
||||
end
|
||||
|
||||
@@ -30,8 +30,6 @@ defmodule Domain.Resources.Resource do
|
||||
|
||||
field :created_by, Ecto.Enum, values: ~w[identity actor system]a
|
||||
field :created_by_subject, :map
|
||||
belongs_to :created_by_actor, Domain.Actors.Actor
|
||||
belongs_to :created_by_identity, Domain.Auth.Identity
|
||||
|
||||
belongs_to :replaced_by_resource, Domain.Resources.Resource
|
||||
has_one :replaces_resource, Domain.Resources.Resource, foreign_key: :replaced_by_resource_id
|
||||
|
||||
@@ -45,8 +45,6 @@ defmodule Domain.Tokens.Token do
|
||||
# Maybe this is not needed and they should be in the join tables (eg. relay_group_tokens)
|
||||
field :created_by, Ecto.Enum, values: ~w[actor identity system]a
|
||||
field :created_by_subject, :map
|
||||
belongs_to :created_by_identity, Domain.Auth.Identity
|
||||
belongs_to :created_by_actor, Domain.Actors.Actor
|
||||
field :created_by_user_agent, :string
|
||||
field :created_by_remote_ip, Domain.Types.IP
|
||||
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
defmodule Domain.Repo.Migrations.UpdateVerifiedByConstraint do
|
||||
use Ecto.Migration
|
||||
|
||||
def change do
|
||||
execute("""
|
||||
ALTER TABLE clients
|
||||
DROP CONSTRAINT IF EXISTS verified_fields_set
|
||||
""")
|
||||
|
||||
create(
|
||||
constraint(:clients, :verified_fields_set,
|
||||
check: """
|
||||
(
|
||||
verified_at IS NULL
|
||||
AND verified_by IS NULL
|
||||
AND verified_by_subject IS NULL
|
||||
)
|
||||
OR
|
||||
(
|
||||
verified_at IS NOT NULL
|
||||
AND verified_by IS NOT NULL
|
||||
AND verified_by_subject IS NOT NULL
|
||||
)
|
||||
"""
|
||||
)
|
||||
)
|
||||
end
|
||||
end
|
||||
@@ -780,7 +780,6 @@ defmodule Domain.AuthTest do
|
||||
|
||||
assert provider.created_by == :system
|
||||
assert provider.created_by_subject == %{"email" => nil, "name" => "System"}
|
||||
assert is_nil(provider.created_by_identity_id)
|
||||
|
||||
assert is_nil(provider.disabled_at)
|
||||
assert is_nil(provider.deleted_at)
|
||||
@@ -842,7 +841,6 @@ defmodule Domain.AuthTest do
|
||||
assert {:ok, provider} = create_provider(account, attrs, subject)
|
||||
|
||||
assert provider.created_by == :identity
|
||||
assert provider.created_by_identity_id == subject.identity.id
|
||||
|
||||
assert provider.created_by_subject == %{
|
||||
"email" => subject.identity.email,
|
||||
@@ -4094,7 +4092,6 @@ defmodule Domain.AuthTest do
|
||||
refute token.identity_id
|
||||
assert token.actor_id == actor.id
|
||||
assert token.created_by == :identity
|
||||
assert token.created_by_identity_id == subject.identity.id
|
||||
assert token.created_by_user_agent == context.user_agent
|
||||
assert token.created_by_remote_ip.address == context.remote_ip
|
||||
|
||||
@@ -4208,7 +4205,6 @@ defmodule Domain.AuthTest do
|
||||
refute token.identity_id
|
||||
assert token.actor_id == actor.id
|
||||
assert token.created_by == :identity
|
||||
assert token.created_by_identity_id == subject.identity.id
|
||||
assert token.created_by_user_agent == context.user_agent
|
||||
assert token.created_by_remote_ip.address == context.remote_ip
|
||||
|
||||
|
||||
@@ -469,7 +469,7 @@ defmodule Domain.ClientsTest do
|
||||
Fixtures.Auth.create_subject(account: account, identity: previous_identity)
|
||||
|
||||
client = Fixtures.Clients.create_client(subject: previous_subject)
|
||||
client = Fixtures.Clients.verify_client(client)
|
||||
client = Fixtures.Clients.verify_client(client, previous_subject)
|
||||
|
||||
attrs =
|
||||
Fixtures.Clients.client_attrs(
|
||||
@@ -528,8 +528,11 @@ defmodule Domain.ClientsTest do
|
||||
|
||||
assert updated_client.verified_at == client.verified_at
|
||||
assert updated_client.verified_by == client.verified_by
|
||||
assert updated_client.verified_by_actor_id == client.verified_by_actor_id
|
||||
assert updated_client.verified_by_identity_id == client.verified_by_identity_id
|
||||
|
||||
assert updated_client.verified_by_subject == %{
|
||||
"email" => previous_subject.identity.email,
|
||||
"name" => previous_subject.actor.name
|
||||
}
|
||||
|
||||
assert updated_client.device_serial == client.device_serial
|
||||
assert updated_client.device_uuid == client.device_uuid
|
||||
@@ -602,8 +605,7 @@ defmodule Domain.ClientsTest do
|
||||
|
||||
refute created_client.verified_at
|
||||
refute created_client.verified_by
|
||||
refute created_client.verified_by_actor_id
|
||||
refute created_client.verified_by_identity_id
|
||||
refute created_client.verified_by_subject
|
||||
|
||||
assert created_client.device_serial == attrs.device_serial
|
||||
assert created_client.device_uuid == attrs.device_uuid
|
||||
@@ -653,14 +655,14 @@ defmodule Domain.ClientsTest do
|
||||
)
|
||||
|
||||
attrs = Map.put(attrs, field, Ecto.UUID.generate())
|
||||
|
||||
assert {:ok, updated_client} = upsert_client(attrs, subject)
|
||||
assert updated_client.id == client.id
|
||||
assert Map.get(updated_client, field) == Map.get(attrs, field)
|
||||
|
||||
assert is_nil(updated_client.verified_at)
|
||||
assert is_nil(updated_client.verified_by)
|
||||
assert is_nil(updated_client.verified_by_actor_id)
|
||||
assert is_nil(updated_client.verified_by_identity_id)
|
||||
assert is_nil(updated_client.verified_by_subject)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -694,7 +696,7 @@ defmodule Domain.ClientsTest do
|
||||
:firebase_installation_id
|
||||
] do
|
||||
client = Fixtures.Clients.create_client(subject: previous_subject)
|
||||
client = Fixtures.Clients.verify_client(client)
|
||||
client = Fixtures.Clients.verify_client(client, previous_subject)
|
||||
|
||||
attrs =
|
||||
Fixtures.Clients.client_attrs(
|
||||
@@ -712,8 +714,7 @@ defmodule Domain.ClientsTest do
|
||||
|
||||
assert is_nil(updated_client.verified_at)
|
||||
assert is_nil(updated_client.verified_by)
|
||||
assert is_nil(updated_client.verified_by_actor_id)
|
||||
assert is_nil(updated_client.verified_by_identity_id)
|
||||
assert is_nil(updated_client.verified_by_subject)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -762,8 +763,7 @@ defmodule Domain.ClientsTest do
|
||||
|
||||
refute is_nil(updated_client.verified_at)
|
||||
refute is_nil(updated_client.verified_by)
|
||||
refute is_nil(updated_client.verified_by_actor_id)
|
||||
refute is_nil(updated_client.verified_by_identity_id)
|
||||
refute is_nil(updated_client.verified_by_subject)
|
||||
end
|
||||
|
||||
test "does not reserve additional addresses on update", %{
|
||||
@@ -1014,8 +1014,11 @@ defmodule Domain.ClientsTest do
|
||||
assert {:ok, client} = verify_client(client, subject)
|
||||
assert client.verified_at
|
||||
assert client.verified_by == :identity
|
||||
assert client.verified_by_actor_id == subject.actor.id
|
||||
assert client.verified_by_identity_id == subject.identity.id
|
||||
|
||||
assert client.verified_by_subject == %{
|
||||
"email" => subject.identity.email,
|
||||
"name" => actor.name
|
||||
}
|
||||
|
||||
assert {:ok, double_verified_client} = verify_client(client, subject)
|
||||
assert double_verified_client.verified_at == client.verified_at
|
||||
@@ -1053,8 +1056,7 @@ defmodule Domain.ClientsTest do
|
||||
|
||||
assert is_nil(client.verified_at)
|
||||
assert is_nil(client.verified_by)
|
||||
assert is_nil(client.verified_by_actor_id)
|
||||
assert is_nil(client.verified_by_identity_id)
|
||||
assert is_nil(client.verified_by_subject)
|
||||
end
|
||||
|
||||
test "expires flows for the unverified client", %{
|
||||
|
||||
@@ -214,7 +214,6 @@ defmodule Domain.GatewaysTest do
|
||||
assert group.name == "foo"
|
||||
|
||||
assert group.created_by == :identity
|
||||
assert group.created_by_identity_id == subject.identity.id
|
||||
|
||||
assert group.created_by_subject == %{
|
||||
"name" => subject.actor.name,
|
||||
@@ -469,7 +468,6 @@ defmodule Domain.GatewaysTest do
|
||||
assert token.account_id == account.id
|
||||
assert token.gateway_group_id == group.id
|
||||
assert token.created_by == :identity
|
||||
assert token.created_by_identity_id == subject.identity.id
|
||||
assert token.created_by_user_agent == context.user_agent
|
||||
assert token.created_by_remote_ip.address == context.remote_ip
|
||||
|
||||
|
||||
@@ -173,7 +173,6 @@ defmodule Domain.RelaysTest do
|
||||
assert group.name == attrs.name
|
||||
|
||||
assert group.created_by == :identity
|
||||
assert group.created_by_identity_id == subject.identity.id
|
||||
|
||||
assert group.created_by_subject == %{
|
||||
"name" => subject.actor.name,
|
||||
@@ -225,7 +224,6 @@ defmodule Domain.RelaysTest do
|
||||
assert group.name == attrs.name
|
||||
|
||||
assert group.created_by == :system
|
||||
assert is_nil(group.created_by_identity_id)
|
||||
assert group.created_by_subject == %{"name" => "System", "email" => nil}
|
||||
end
|
||||
end
|
||||
@@ -436,7 +434,12 @@ defmodule Domain.RelaysTest do
|
||||
assert token.account_id == account.id
|
||||
assert token.relay_group_id == group.id
|
||||
assert token.created_by == :identity
|
||||
assert token.created_by_identity_id == subject.identity.id
|
||||
|
||||
assert token.created_by_subject == %{
|
||||
"email" => subject.identity.email,
|
||||
"name" => subject.actor.name
|
||||
}
|
||||
|
||||
assert token.created_by_user_agent == subject.context.user_agent
|
||||
assert token.created_by_remote_ip.address == subject.context.remote_ip
|
||||
refute token.expires_at
|
||||
@@ -453,7 +456,7 @@ defmodule Domain.RelaysTest do
|
||||
refute token.account_id
|
||||
assert token.relay_group_id == group.id
|
||||
assert token.created_by == :system
|
||||
refute token.created_by_identity_id
|
||||
assert token.created_by_subject == %{"email" => nil, "name" => "System"}
|
||||
refute token.created_by_user_agent
|
||||
refute token.created_by_remote_ip
|
||||
refute token.expires_at
|
||||
@@ -503,7 +506,12 @@ defmodule Domain.RelaysTest do
|
||||
assert token.account_id == account.id
|
||||
assert token.relay_group_id == group.id
|
||||
assert token.created_by == :identity
|
||||
assert token.created_by_identity_id == subject.identity.id
|
||||
|
||||
assert token.created_by_subject == %{
|
||||
"email" => subject.identity.email,
|
||||
"name" => subject.actor.name
|
||||
}
|
||||
|
||||
assert token.created_by_user_agent == context.user_agent
|
||||
assert token.created_by_remote_ip.address == context.remote_ip
|
||||
refute token.expires_at
|
||||
|
||||
@@ -1235,7 +1235,6 @@ defmodule Domain.ResourcesTest do
|
||||
assert resource.account_id == account.id
|
||||
|
||||
assert resource.created_by == :identity
|
||||
assert resource.created_by_identity_id == subject.identity.id
|
||||
|
||||
assert resource.created_by_subject == %{
|
||||
"name" => subject.actor.name,
|
||||
@@ -1247,7 +1246,6 @@ defmodule Domain.ResourcesTest do
|
||||
assert connection.gateway_group_id == gateway.group_id
|
||||
assert connection.account_id == account.id
|
||||
assert connection.created_by == :identity
|
||||
assert connection.created_by_identity_id == subject.identity.id
|
||||
|
||||
assert resource.created_by_subject == %{
|
||||
"name" => subject.actor.name,
|
||||
|
||||
@@ -86,4 +86,11 @@ defmodule Domain.Fixtures.Clients do
|
||||
{:ok, client} = Clients.verify_client(client, subject)
|
||||
client
|
||||
end
|
||||
|
||||
def verify_client(client, subject) do
|
||||
client = Repo.preload(client, :account)
|
||||
|
||||
{:ok, client} = Clients.verify_client(client, subject)
|
||||
client
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1115,7 +1115,7 @@ defmodule Web.CoreComponents do
|
||||
end
|
||||
|
||||
@doc """
|
||||
Renders creation timestamp and entity.
|
||||
Renders creation timestamp from created_by_subject
|
||||
"""
|
||||
attr :schema, :any, required: true
|
||||
|
||||
@@ -1125,6 +1125,12 @@ defmodule Web.CoreComponents do
|
||||
"""
|
||||
end
|
||||
|
||||
def created_by(%{schema: %{created_by: :provider}} = assigns) do
|
||||
~H"""
|
||||
<.relative_datetime datetime={@schema.inserted_at} /> by Directory Sync
|
||||
"""
|
||||
end
|
||||
|
||||
def created_by(%{schema: %{created_by: :actor}} = assigns) do
|
||||
~H"""
|
||||
<.relative_datetime datetime={@schema.inserted_at} /> by {@schema.created_by_subject["name"]}
|
||||
@@ -1137,14 +1143,8 @@ defmodule Web.CoreComponents do
|
||||
"""
|
||||
end
|
||||
|
||||
def created_by(%{schema: %{created_by: :provider}} = assigns) do
|
||||
~H"""
|
||||
<.relative_datetime datetime={@schema.inserted_at} /> by Directory Sync
|
||||
"""
|
||||
end
|
||||
|
||||
@doc """
|
||||
Renders verification timestamp and entity.
|
||||
Renders verification timestamp and entity from verified_by_subject.
|
||||
"""
|
||||
attr :schema, :any, required: true
|
||||
|
||||
|
||||
@@ -76,7 +76,7 @@ defmodule Web.Actors.Show do
|
||||
end
|
||||
|
||||
def handle_identities_update!(socket, list_opts) do
|
||||
list_opts = Keyword.put(list_opts, :preload, [:provider, created_by_identity: [:actor]])
|
||||
list_opts = Keyword.put(list_opts, :preload, [:provider])
|
||||
|
||||
with {:ok, identities, metadata} <-
|
||||
Auth.list_identities_for(socket.assigns.actor, socket.assigns.subject, list_opts) do
|
||||
@@ -105,7 +105,6 @@ defmodule Web.Actors.Show do
|
||||
list_opts =
|
||||
Keyword.put(list_opts, :preload,
|
||||
identity: [:provider],
|
||||
created_by_identity: [:actor],
|
||||
clients: []
|
||||
)
|
||||
|
||||
|
||||
@@ -10,8 +10,6 @@ defmodule Web.Clients.Show do
|
||||
preload: [
|
||||
:online?,
|
||||
:actor,
|
||||
:verified_by_identity,
|
||||
:verified_by_actor,
|
||||
last_used_token: [identity: [:provider]]
|
||||
]
|
||||
) do
|
||||
@@ -425,8 +423,6 @@ defmodule Web.Clients.Show do
|
||||
Clients.fetch_client_by_id(client.id, socket.assigns.subject,
|
||||
preload: [
|
||||
:actor,
|
||||
:verified_by_identity,
|
||||
:verified_by_actor,
|
||||
last_used_token: [identity: [:provider]]
|
||||
]
|
||||
)
|
||||
|
||||
@@ -24,7 +24,7 @@ defmodule Web.Groups.Index do
|
||||
end
|
||||
|
||||
def handle_groups_update!(socket, list_opts) do
|
||||
list_opts = Keyword.put(list_opts, :preload, [:provider, created_by_identity: [:actor]])
|
||||
list_opts = Keyword.put(list_opts, :preload, [:provider])
|
||||
|
||||
with {:ok, groups, metadata} <- Actors.list_groups(socket.assigns.subject, list_opts),
|
||||
{:ok, group_actors} <- Actors.peek_group_actors(groups, 3, socket.assigns.subject) do
|
||||
|
||||
@@ -5,13 +5,7 @@ defmodule Web.Groups.Show do
|
||||
|
||||
def mount(%{"id" => id}, _session, socket) do
|
||||
with {:ok, group} <-
|
||||
Actors.fetch_group_by_id(id, socket.assigns.subject,
|
||||
preload: [
|
||||
provider: [],
|
||||
created_by_identity: [:actor],
|
||||
created_by_actor: []
|
||||
]
|
||||
) do
|
||||
Actors.fetch_group_by_id(id, socket.assigns.subject, preload: :provider) do
|
||||
socket =
|
||||
assign(socket,
|
||||
page_title: "Group #{group.name}",
|
||||
|
||||
@@ -9,8 +9,6 @@ defmodule Web.Policies.Show do
|
||||
preload: [
|
||||
actor_group: [:provider],
|
||||
resource: [],
|
||||
created_by_identity: :actor,
|
||||
created_by_actor: [],
|
||||
replaced_by_policy: [:actor_group, :resource],
|
||||
replaces_policy: [:actor_group, :resource]
|
||||
]
|
||||
@@ -318,7 +316,6 @@ defmodule Web.Policies.Show do
|
||||
preload: [
|
||||
actor_group: [:provider],
|
||||
resource: [],
|
||||
created_by_identity: :actor,
|
||||
replaced_by_policy: [:actor_group, :resource],
|
||||
replaces_policy: [:actor_group, :resource]
|
||||
]
|
||||
@@ -337,7 +334,6 @@ defmodule Web.Policies.Show do
|
||||
policy
|
||||
| actor_group: socket.assigns.policy.actor_group,
|
||||
resource: socket.assigns.policy.resource,
|
||||
created_by_identity: socket.assigns.policy.created_by_identity,
|
||||
replaced_by_policy: socket.assigns.policy.replaced_by_policy,
|
||||
replaces_policy: socket.assigns.policy.replaces_policy
|
||||
}
|
||||
@@ -352,7 +348,6 @@ defmodule Web.Policies.Show do
|
||||
policy
|
||||
| actor_group: socket.assigns.policy.actor_group,
|
||||
resource: socket.assigns.policy.resource,
|
||||
created_by_identity: socket.assigns.policy.created_by_identity,
|
||||
replaced_by_policy: socket.assigns.policy.replaced_by_policy,
|
||||
replaces_policy: socket.assigns.policy.replaces_policy
|
||||
}
|
||||
|
||||
@@ -4,12 +4,7 @@ defmodule Web.RelayGroups.Show do
|
||||
|
||||
def mount(%{"id" => id}, _session, socket) do
|
||||
with true <- Accounts.self_hosted_relays_enabled?(socket.assigns.account),
|
||||
{:ok, group} <-
|
||||
Relays.fetch_group_by_id(id, socket.assigns.subject,
|
||||
preload: [
|
||||
created_by_identity: [:actor]
|
||||
]
|
||||
) do
|
||||
{:ok, group} <- Relays.fetch_group_by_id(id, socket.assigns.subject) do
|
||||
if connected?(socket) do
|
||||
:ok = Relays.subscribe_to_relays_presence_in_group(group)
|
||||
end
|
||||
|
||||
@@ -401,7 +401,6 @@ defmodule Web.Resources.Show do
|
||||
preload: [
|
||||
:gateway_groups,
|
||||
:policies,
|
||||
created_by_identity: [:actor],
|
||||
replaced_by_resource: [],
|
||||
replaces_resource: []
|
||||
]
|
||||
@@ -439,8 +438,6 @@ defmodule Web.Resources.Show do
|
||||
Resources.fetch_internet_resource(subject,
|
||||
preload: [
|
||||
:gateway_groups,
|
||||
:created_by_actor,
|
||||
created_by_identity: [:actor],
|
||||
replaced_by_resource: [],
|
||||
replaces_resource: []
|
||||
]
|
||||
@@ -451,8 +448,6 @@ defmodule Web.Resources.Show do
|
||||
Resources.fetch_resource_by_id_or_persistent_id(id, subject,
|
||||
preload: [
|
||||
:gateway_groups,
|
||||
:created_by_actor,
|
||||
created_by_identity: [:actor],
|
||||
replaced_by_resource: [],
|
||||
replaces_resource: []
|
||||
]
|
||||
|
||||
@@ -30,9 +30,6 @@ defmodule Web.Settings.ApiClients.Show do
|
||||
end
|
||||
|
||||
def handle_tokens_update!(socket, list_opts) do
|
||||
list_opts =
|
||||
Keyword.put(list_opts, :preload, created_by_identity: [:actor])
|
||||
|
||||
with {:ok, tokens, metadata} <-
|
||||
Tokens.list_tokens_for(socket.assigns.actor, socket.assigns.subject, list_opts) do
|
||||
{:ok,
|
||||
@@ -170,12 +167,7 @@ defmodule Web.Settings.ApiClients.Show do
|
||||
{Cldr.DateTime.Formatter.date(token.expires_at, 1, "en", Web.CLDR, [])}
|
||||
</:col>
|
||||
<:col :let={token} label="created by">
|
||||
<.link
|
||||
class={[link_style()]}
|
||||
navigate={~p"/#{@account}/actors/#{token.created_by_actor_id}"}
|
||||
>
|
||||
{get_identity_email(token.created_by_identity)}
|
||||
</.link>
|
||||
{token.created_by_subject["name"]}
|
||||
</:col>
|
||||
<:col :let={token} label="last used">
|
||||
<.relative_datetime datetime={token.last_seen_at} />
|
||||
|
||||
@@ -5,9 +5,7 @@ defmodule Web.Settings.IdentityProviders.GoogleWorkspace.Show do
|
||||
|
||||
def mount(%{"provider_id" => provider_id}, _session, socket) do
|
||||
with {:ok, provider} <-
|
||||
Auth.fetch_provider_by_id(provider_id, socket.assigns.subject,
|
||||
preload: [created_by_identity: [:actor]]
|
||||
),
|
||||
Auth.fetch_provider_by_id(provider_id, socket.assigns.subject),
|
||||
{:ok, identities_count_by_provider_id} <-
|
||||
Auth.fetch_identities_count_grouped_by_provider_id(socket.assigns.subject),
|
||||
{:ok, groups_count_by_provider_id} <-
|
||||
@@ -255,11 +253,7 @@ defmodule Web.Settings.IdentityProviders.GoogleWorkspace.Show do
|
||||
def handle_event("enable", _params, socket) do
|
||||
attrs = %{disabled_at: nil}
|
||||
{:ok, provider} = Auth.update_provider(socket.assigns.provider, attrs, socket.assigns.subject)
|
||||
|
||||
{:ok, provider} =
|
||||
Auth.fetch_provider_by_id(provider.id, socket.assigns.subject,
|
||||
preload: [created_by_identity: [:actor]]
|
||||
)
|
||||
{:ok, provider} = Auth.fetch_provider_by_id(provider.id, socket.assigns.subject)
|
||||
|
||||
{:noreply, assign(socket, provider: provider)}
|
||||
end
|
||||
@@ -267,11 +261,7 @@ defmodule Web.Settings.IdentityProviders.GoogleWorkspace.Show do
|
||||
def handle_event("disable", _params, socket) do
|
||||
attrs = %{disabled_at: DateTime.utc_now()}
|
||||
{:ok, provider} = Auth.update_provider(socket.assigns.provider, attrs, socket.assigns.subject)
|
||||
|
||||
{:ok, provider} =
|
||||
Auth.fetch_provider_by_id(provider.id, socket.assigns.subject,
|
||||
preload: [created_by_identity: [:actor]]
|
||||
)
|
||||
{:ok, provider} = Auth.fetch_provider_by_id(provider.id, socket.assigns.subject)
|
||||
|
||||
{:noreply, assign(socket, provider: provider)}
|
||||
end
|
||||
|
||||
@@ -5,9 +5,7 @@ defmodule Web.Settings.IdentityProviders.JumpCloud.Show do
|
||||
|
||||
def mount(%{"provider_id" => provider_id}, _session, socket) do
|
||||
with {:ok, provider} <-
|
||||
Auth.fetch_provider_by_id(provider_id, socket.assigns.subject,
|
||||
preload: [created_by_identity: [:actor]]
|
||||
),
|
||||
Auth.fetch_provider_by_id(provider_id, socket.assigns.subject),
|
||||
{:ok, identities_count_by_provider_id} <-
|
||||
Auth.fetch_identities_count_grouped_by_provider_id(socket.assigns.subject),
|
||||
{:ok, groups_count_by_provider_id} <-
|
||||
@@ -266,11 +264,7 @@ defmodule Web.Settings.IdentityProviders.JumpCloud.Show do
|
||||
def handle_event("enable", _params, socket) do
|
||||
attrs = %{disabled_at: nil}
|
||||
{:ok, provider} = Auth.update_provider(socket.assigns.provider, attrs, socket.assigns.subject)
|
||||
|
||||
{:ok, provider} =
|
||||
Auth.fetch_provider_by_id(provider.id, socket.assigns.subject,
|
||||
preload: [created_by_identity: [:actor]]
|
||||
)
|
||||
{:ok, provider} = Auth.fetch_provider_by_id(provider.id, socket.assigns.subject)
|
||||
|
||||
{:noreply, assign(socket, provider: provider)}
|
||||
end
|
||||
@@ -278,11 +272,7 @@ defmodule Web.Settings.IdentityProviders.JumpCloud.Show do
|
||||
def handle_event("disable", _params, socket) do
|
||||
attrs = %{disabled_at: DateTime.utc_now()}
|
||||
{:ok, provider} = Auth.update_provider(socket.assigns.provider, attrs, socket.assigns.subject)
|
||||
|
||||
{:ok, provider} =
|
||||
Auth.fetch_provider_by_id(provider.id, socket.assigns.subject,
|
||||
preload: [created_by_identity: [:actor]]
|
||||
)
|
||||
{:ok, provider} = Auth.fetch_provider_by_id(provider.id, socket.assigns.subject)
|
||||
|
||||
{:noreply, assign(socket, provider: provider)}
|
||||
end
|
||||
|
||||
@@ -5,9 +5,7 @@ defmodule Web.Settings.IdentityProviders.MicrosoftEntra.Show do
|
||||
|
||||
def mount(%{"provider_id" => provider_id}, _session, socket) do
|
||||
with {:ok, provider} <-
|
||||
Auth.fetch_provider_by_id(provider_id, socket.assigns.subject,
|
||||
preload: [created_by_identity: [:actor]]
|
||||
),
|
||||
Auth.fetch_provider_by_id(provider_id, socket.assigns.subject),
|
||||
{:ok, identities_count_by_provider_id} <-
|
||||
Auth.fetch_identities_count_grouped_by_provider_id(socket.assigns.subject),
|
||||
{:ok, groups_count_by_provider_id} <-
|
||||
@@ -253,11 +251,7 @@ defmodule Web.Settings.IdentityProviders.MicrosoftEntra.Show do
|
||||
def handle_event("enable", _params, socket) do
|
||||
attrs = %{disabled_at: nil}
|
||||
{:ok, provider} = Auth.update_provider(socket.assigns.provider, attrs, socket.assigns.subject)
|
||||
|
||||
{:ok, provider} =
|
||||
Auth.fetch_provider_by_id(provider.id, socket.assigns.subject,
|
||||
preload: [created_by_identity: [:actor]]
|
||||
)
|
||||
{:ok, provider} = Auth.fetch_provider_by_id(provider.id, socket.assigns.subject)
|
||||
|
||||
{:noreply, assign(socket, provider: provider)}
|
||||
end
|
||||
@@ -265,11 +259,7 @@ defmodule Web.Settings.IdentityProviders.MicrosoftEntra.Show do
|
||||
def handle_event("disable", _params, socket) do
|
||||
attrs = %{disabled_at: DateTime.utc_now()}
|
||||
{:ok, provider} = Auth.update_provider(socket.assigns.provider, attrs, socket.assigns.subject)
|
||||
|
||||
{:ok, provider} =
|
||||
Auth.fetch_provider_by_id(provider.id, socket.assigns.subject,
|
||||
preload: [created_by_identity: [:actor]]
|
||||
)
|
||||
{:ok, provider} = Auth.fetch_provider_by_id(provider.id, socket.assigns.subject)
|
||||
|
||||
{:noreply, assign(socket, provider: provider)}
|
||||
end
|
||||
|
||||
@@ -5,9 +5,7 @@ defmodule Web.Settings.IdentityProviders.Mock.Show do
|
||||
|
||||
def mount(%{"provider_id" => provider_id}, _session, socket) do
|
||||
with {:ok, provider} <-
|
||||
Auth.fetch_provider_by_id(provider_id, socket.assigns.subject,
|
||||
preload: [created_by_identity: [:actor]]
|
||||
),
|
||||
Auth.fetch_provider_by_id(provider_id, socket.assigns.subject),
|
||||
{:ok, identities_count_by_provider_id} <-
|
||||
Auth.fetch_identities_count_grouped_by_provider_id(socket.assigns.subject),
|
||||
{:ok, groups_count_by_provider_id} <-
|
||||
@@ -258,11 +256,7 @@ defmodule Web.Settings.IdentityProviders.Mock.Show do
|
||||
def handle_event("enable", _params, socket) do
|
||||
attrs = %{disabled_at: nil}
|
||||
{:ok, provider} = Auth.update_provider(socket.assigns.provider, attrs, socket.assigns.subject)
|
||||
|
||||
{:ok, provider} =
|
||||
Auth.fetch_provider_by_id(provider.id, socket.assigns.subject,
|
||||
preload: [created_by_identity: [:actor]]
|
||||
)
|
||||
{:ok, provider} = Auth.fetch_provider_by_id(provider.id, socket.assigns.subject)
|
||||
|
||||
{:noreply, assign(socket, provider: provider)}
|
||||
end
|
||||
@@ -270,11 +264,7 @@ defmodule Web.Settings.IdentityProviders.Mock.Show do
|
||||
def handle_event("disable", _params, socket) do
|
||||
attrs = %{disabled_at: DateTime.utc_now()}
|
||||
{:ok, provider} = Auth.update_provider(socket.assigns.provider, attrs, socket.assigns.subject)
|
||||
|
||||
{:ok, provider} =
|
||||
Auth.fetch_provider_by_id(provider.id, socket.assigns.subject,
|
||||
preload: [created_by_identity: [:actor]]
|
||||
)
|
||||
{:ok, provider} = Auth.fetch_provider_by_id(provider.id, socket.assigns.subject)
|
||||
|
||||
{:noreply, assign(socket, provider: provider)}
|
||||
end
|
||||
|
||||
@@ -5,9 +5,7 @@ defmodule Web.Settings.IdentityProviders.Okta.Show do
|
||||
|
||||
def mount(%{"provider_id" => provider_id}, _session, socket) do
|
||||
with {:ok, provider} <-
|
||||
Auth.fetch_provider_by_id(provider_id, socket.assigns.subject,
|
||||
preload: [created_by_identity: [:actor]]
|
||||
),
|
||||
Auth.fetch_provider_by_id(provider_id, socket.assigns.subject),
|
||||
{:ok, identities_count_by_provider_id} <-
|
||||
Auth.fetch_identities_count_grouped_by_provider_id(socket.assigns.subject),
|
||||
{:ok, groups_count_by_provider_id} <-
|
||||
@@ -273,11 +271,7 @@ defmodule Web.Settings.IdentityProviders.Okta.Show do
|
||||
def handle_event("enable", _params, socket) do
|
||||
attrs = %{disabled_at: nil}
|
||||
{:ok, provider} = Auth.update_provider(socket.assigns.provider, attrs, socket.assigns.subject)
|
||||
|
||||
{:ok, provider} =
|
||||
Auth.fetch_provider_by_id(provider.id, socket.assigns.subject,
|
||||
preload: [created_by_identity: [:actor]]
|
||||
)
|
||||
{:ok, provider} = Auth.fetch_provider_by_id(provider.id, socket.assigns.subject)
|
||||
|
||||
{:noreply, assign(socket, provider: provider)}
|
||||
end
|
||||
@@ -285,11 +279,7 @@ defmodule Web.Settings.IdentityProviders.Okta.Show do
|
||||
def handle_event("disable", _params, socket) do
|
||||
attrs = %{disabled_at: DateTime.utc_now()}
|
||||
{:ok, provider} = Auth.update_provider(socket.assigns.provider, attrs, socket.assigns.subject)
|
||||
|
||||
{:ok, provider} =
|
||||
Auth.fetch_provider_by_id(provider.id, socket.assigns.subject,
|
||||
preload: [created_by_identity: [:actor]]
|
||||
)
|
||||
{:ok, provider} = Auth.fetch_provider_by_id(provider.id, socket.assigns.subject)
|
||||
|
||||
{:noreply, assign(socket, provider: provider)}
|
||||
end
|
||||
|
||||
@@ -4,10 +4,7 @@ defmodule Web.Settings.IdentityProviders.OpenIDConnect.Show do
|
||||
alias Domain.{Auth, Actors}
|
||||
|
||||
def mount(%{"provider_id" => provider_id}, _session, socket) do
|
||||
with {:ok, provider} <-
|
||||
Auth.fetch_provider_by_id(provider_id, socket.assigns.subject,
|
||||
preload: [created_by_identity: [:actor]]
|
||||
) do
|
||||
with {:ok, provider} <- Auth.fetch_provider_by_id(provider_id, socket.assigns.subject) do
|
||||
safe_to_delete_actors_count = Actors.count_synced_actors_for_provider(provider)
|
||||
|
||||
socket =
|
||||
@@ -227,11 +224,7 @@ defmodule Web.Settings.IdentityProviders.OpenIDConnect.Show do
|
||||
def handle_event("enable", _params, socket) do
|
||||
attrs = %{disabled_at: nil}
|
||||
{:ok, provider} = Auth.update_provider(socket.assigns.provider, attrs, socket.assigns.subject)
|
||||
|
||||
{:ok, provider} =
|
||||
Auth.fetch_provider_by_id(provider.id, socket.assigns.subject,
|
||||
preload: [created_by_identity: [:actor]]
|
||||
)
|
||||
{:ok, provider} = Auth.fetch_provider_by_id(provider.id, socket.assigns.subject)
|
||||
|
||||
{:noreply, assign(socket, provider: provider)}
|
||||
end
|
||||
@@ -239,11 +232,7 @@ defmodule Web.Settings.IdentityProviders.OpenIDConnect.Show do
|
||||
def handle_event("disable", _params, socket) do
|
||||
attrs = %{disabled_at: DateTime.utc_now()}
|
||||
{:ok, provider} = Auth.update_provider(socket.assigns.provider, attrs, socket.assigns.subject)
|
||||
|
||||
{:ok, provider} =
|
||||
Auth.fetch_provider_by_id(provider.id, socket.assigns.subject,
|
||||
preload: [created_by_identity: [:actor]]
|
||||
)
|
||||
{:ok, provider} = Auth.fetch_provider_by_id(provider.id, socket.assigns.subject)
|
||||
|
||||
{:noreply, assign(socket, provider: provider)}
|
||||
end
|
||||
|
||||
@@ -4,10 +4,7 @@ defmodule Web.Settings.IdentityProviders.System.Show do
|
||||
alias Domain.Auth
|
||||
|
||||
def mount(%{"provider_id" => provider_id}, _session, socket) do
|
||||
with {:ok, provider} <-
|
||||
Auth.fetch_provider_by_id(provider_id, socket.assigns.subject,
|
||||
preload: [created_by_identity: [:actor]]
|
||||
) do
|
||||
with {:ok, provider} <- Auth.fetch_provider_by_id(provider_id, socket.assigns.subject) do
|
||||
socket =
|
||||
assign(socket, provider: provider, page_title: "Identity Provider #{provider.name}")
|
||||
|
||||
@@ -122,11 +119,7 @@ defmodule Web.Settings.IdentityProviders.System.Show do
|
||||
def handle_event("enable", _params, socket) do
|
||||
attrs = %{disabled_at: nil}
|
||||
{:ok, provider} = Auth.update_provider(socket.assigns.provider, attrs, socket.assigns.subject)
|
||||
|
||||
{:ok, provider} =
|
||||
Auth.fetch_provider_by_id(provider.id, socket.assigns.subject,
|
||||
preload: [created_by_identity: [:actor]]
|
||||
)
|
||||
{:ok, provider} = Auth.fetch_provider_by_id(provider.id, socket.assigns.subject)
|
||||
|
||||
{:noreply, assign(socket, provider: provider)}
|
||||
end
|
||||
@@ -134,11 +127,7 @@ defmodule Web.Settings.IdentityProviders.System.Show do
|
||||
def handle_event("disable", _params, socket) do
|
||||
attrs = %{disabled_at: DateTime.utc_now()}
|
||||
{:ok, provider} = Auth.update_provider(socket.assigns.provider, attrs, socket.assigns.subject)
|
||||
|
||||
{:ok, provider} =
|
||||
Auth.fetch_provider_by_id(provider.id, socket.assigns.subject,
|
||||
preload: [created_by_identity: [:actor]]
|
||||
)
|
||||
{:ok, provider} = Auth.fetch_provider_by_id(provider.id, socket.assigns.subject)
|
||||
|
||||
{:noreply, assign(socket, provider: provider)}
|
||||
end
|
||||
|
||||
@@ -4,12 +4,7 @@ defmodule Web.Sites.Show do
|
||||
|
||||
def mount(%{"id" => id}, _session, socket) do
|
||||
with {:ok, group} <-
|
||||
Gateways.fetch_group_by_id(id, socket.assigns.subject,
|
||||
preload: [
|
||||
created_by_identity: [:actor],
|
||||
created_by_actor: []
|
||||
]
|
||||
) do
|
||||
Gateways.fetch_group_by_id(id, socket.assigns.subject) do
|
||||
if connected?(socket) do
|
||||
:ok = Gateways.subscribe_to_gateways_presence_in_group(group)
|
||||
end
|
||||
@@ -32,8 +27,6 @@ defmodule Web.Sites.Show do
|
||||
Resources.fetch_internet_resource(socket.assigns.subject,
|
||||
preload: [
|
||||
:gateway_groups,
|
||||
:created_by_actor,
|
||||
created_by_identity: [:actor],
|
||||
replaced_by_resource: [],
|
||||
replaces_resource: []
|
||||
]
|
||||
|
||||
@@ -323,8 +323,7 @@ defmodule Web.Live.Actors.ShowTest do
|
||||
Fixtures.Auth.create_identity(account: account, actor: actor)
|
||||
|> Ecto.Changeset.change(
|
||||
created_by: :identity,
|
||||
created_by_identity_id: admin_identity.id,
|
||||
created_by_subject: %{"name" => actor.name, "email" => admin_identity.email}
|
||||
created_by_subject: %{"email" => admin_identity.email, "name" => actor.name}
|
||||
)
|
||||
|> Repo.update!()
|
||||
|
||||
@@ -386,7 +385,7 @@ defmodule Web.Live.Actors.ShowTest do
|
||||
Fixtures.Auth.create_identity(account: account, actor: actor, provider: provider)
|
||||
|> Ecto.Changeset.change(
|
||||
created_by: :identity,
|
||||
created_by_identity_id: admin_identity.id
|
||||
created_by_subject: %{"email" => admin_identity.email, "name" => ""}
|
||||
)
|
||||
|> Repo.update!()
|
||||
|
||||
@@ -425,7 +424,7 @@ defmodule Web.Live.Actors.ShowTest do
|
||||
)
|
||||
|> Ecto.Changeset.change(
|
||||
created_by: :identity,
|
||||
created_by_identity_id: admin_identity.id
|
||||
created_by_subject: %{"email" => admin_identity.email, "name" => ""}
|
||||
)
|
||||
|> Repo.update!()
|
||||
|
||||
@@ -457,7 +456,7 @@ defmodule Web.Live.Actors.ShowTest do
|
||||
Fixtures.Auth.create_identity(account: account, actor: actor, provider: provider)
|
||||
|> Ecto.Changeset.change(
|
||||
created_by: :identity,
|
||||
created_by_identity_id: admin_identity.id
|
||||
created_by_subject: %{"email" => admin_identity.email, "name" => ""}
|
||||
)
|
||||
|> Repo.update!()
|
||||
|
||||
@@ -536,7 +535,7 @@ defmodule Web.Live.Actors.ShowTest do
|
||||
Fixtures.Auth.create_identity(account: account, actor: actor, provider: email_provider)
|
||||
|> Ecto.Changeset.change(
|
||||
created_by: :identity,
|
||||
created_by_identity_id: admin_identity.id
|
||||
created_by_subject: %{"email" => admin_identity.email, "name" => ""}
|
||||
)
|
||||
|> Repo.update!()
|
||||
|
||||
@@ -582,7 +581,7 @@ defmodule Web.Live.Actors.ShowTest do
|
||||
Fixtures.Auth.create_identity(account: account, actor: actor)
|
||||
|> Ecto.Changeset.change(
|
||||
created_by: :identity,
|
||||
created_by_identity_id: admin_identity.id
|
||||
created_by_subject: %{"email" => admin_identity.email, "name" => ""}
|
||||
)
|
||||
|> Repo.update!()
|
||||
|
||||
|
||||
@@ -135,7 +135,6 @@ defmodule Web.Live.Groups.NewTest do
|
||||
refute group.provider_identifier
|
||||
|
||||
assert group.created_by == :identity
|
||||
assert group.created_by_identity_id == identity.id
|
||||
assert group.created_by_subject == %{"email" => identity.email, "name" => actor.name}
|
||||
|
||||
assert group.account_id == account.id
|
||||
|
||||
@@ -124,7 +124,7 @@ defmodule Web.Live.Groups.ShowTest do
|
||||
group
|
||||
|> Ecto.Changeset.change(
|
||||
created_by: :identity,
|
||||
created_by_identity_id: identity.id
|
||||
created_by_subject: %{"email" => identity.email, "name" => actor.name}
|
||||
)
|
||||
|> Repo.update!()
|
||||
|
||||
|
||||
@@ -345,14 +345,18 @@ defmodule Web.Live.Resources.ShowTest do
|
||||
assert Repo.get(Domain.Resources.Resource, resource.id).deleted_at
|
||||
end
|
||||
|
||||
test "renders created_by link when created by Identity", %{
|
||||
test "renders created_by info when created by Identity", %{
|
||||
account: account,
|
||||
actor: actor,
|
||||
identity: identity,
|
||||
conn: conn
|
||||
} do
|
||||
subject = Fixtures.Auth.create_subject(account: account, actor: actor)
|
||||
|
||||
resource =
|
||||
Fixtures.Resources.create_resource(
|
||||
account: account,
|
||||
subject: subject,
|
||||
address_description: "http://example.com"
|
||||
)
|
||||
|
||||
@@ -361,13 +365,10 @@ defmodule Web.Live.Resources.ShowTest do
|
||||
|> authorize_conn(identity)
|
||||
|> live(~p"/#{account}/resources/#{resource}")
|
||||
|
||||
assert Floki.find(
|
||||
html,
|
||||
"a[href='#{~p"/#{account}/actors/#{resource.created_by_actor_id}"}']"
|
||||
)
|
||||
assert html =~ "by #{actor.name}"
|
||||
end
|
||||
|
||||
test "renders created_by link when created by API client", %{
|
||||
test "renders created_by info when created by API client", %{
|
||||
account: account,
|
||||
identity: identity,
|
||||
conn: conn
|
||||
@@ -387,9 +388,6 @@ defmodule Web.Live.Resources.ShowTest do
|
||||
|> authorize_conn(identity)
|
||||
|> live(~p"/#{account}/resources/#{resource}")
|
||||
|
||||
assert Floki.find(
|
||||
html,
|
||||
"a[href='#{~p"/#{account}/settings/api_clients/#{resource.created_by_actor_id}"}']"
|
||||
)
|
||||
assert html =~ "by #{subject.actor.name}"
|
||||
end
|
||||
end
|
||||
|
||||
@@ -142,7 +142,6 @@ defmodule Web.Live.Settings.IdentityProviders.GoogleWorkspace.ShowTest do
|
||||
provider
|
||||
|> Ecto.Changeset.change(
|
||||
created_by: :identity,
|
||||
created_by_identity_id: identity.id,
|
||||
created_by_subject: %{"name" => actor.name, "email" => identity.email}
|
||||
)
|
||||
|> Repo.update!()
|
||||
|
||||
@@ -163,7 +163,6 @@ defmodule Web.Live.Settings.IdentityProviders.JumpCloud.ShowTest do
|
||||
provider
|
||||
|> Ecto.Changeset.change(
|
||||
created_by: :identity,
|
||||
created_by_identity_id: identity.id,
|
||||
created_by_subject: %{"name" => actor.name, "email" => identity.email}
|
||||
)
|
||||
|> Repo.update!()
|
||||
|
||||
@@ -142,7 +142,6 @@ defmodule Web.Live.Settings.IdentityProviders.MicrosoftEntra.ShowTest do
|
||||
provider
|
||||
|> Ecto.Changeset.change(
|
||||
created_by: :identity,
|
||||
created_by_identity_id: identity.id,
|
||||
created_by_subject: %{"name" => actor.name, "email" => identity.email}
|
||||
)
|
||||
|> Repo.update!()
|
||||
|
||||
@@ -142,7 +142,6 @@ defmodule Web.Live.Settings.IdentityProviders.Okta.ShowTest do
|
||||
provider
|
||||
|> Ecto.Changeset.change(
|
||||
created_by: :identity,
|
||||
created_by_identity_id: identity.id,
|
||||
created_by_subject: %{"name" => actor.name, "email" => identity.email}
|
||||
)
|
||||
|> Repo.update!()
|
||||
|
||||
@@ -103,7 +103,6 @@ defmodule Web.Live.Settings.IdentityProviders.OpenIDConnect.ShowTest do
|
||||
provider
|
||||
|> Ecto.Changeset.change(
|
||||
created_by: :identity,
|
||||
created_by_identity_id: identity.id,
|
||||
created_by_subject: %{"name" => actor.name, "email" => identity.email}
|
||||
)
|
||||
|> Repo.update!()
|
||||
|
||||
@@ -92,7 +92,6 @@ defmodule Web.Live.Settings.IdentityProviders.System.ShowTest do
|
||||
provider
|
||||
|> Ecto.Changeset.change(
|
||||
created_by: :identity,
|
||||
created_by_identity_id: identity.id,
|
||||
created_by_subject: %{"name" => actor.name, "email" => identity.email}
|
||||
)
|
||||
|> Repo.update!()
|
||||
|
||||
Reference in New Issue
Block a user