diff options
author | kaniini <ariadne@dereferenced.org> | 2019-07-17 19:45:40 +0000 |
---|---|---|
committer | kaniini <ariadne@dereferenced.org> | 2019-07-17 19:45:40 +0000 |
commit | 1e48af9acf01bf66bd03babccbf08089eb909788 (patch) | |
tree | 1b46b3fc06b7615666fcdcea30568034439fe071 /lib/pleroma/user.ex | |
parent | 60b54ee64a9130dd4a3245b90ab49943a9e881c6 (diff) | |
parent | c1198351022ead54b8de3bc535df32e333eb9b4d (diff) | |
download | pleroma-1e48af9acf01bf66bd03babccbf08089eb909788.tar.gz |
Merge branch 'feature/instance-fetch-actor' into 'develop'
instance fetch service actor
See merge request pleroma/pleroma!1440
Diffstat (limited to 'lib/pleroma/user.ex')
-rw-r--r-- | lib/pleroma/user.ex | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index ffba3f390..c91fbb68a 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -1157,19 +1157,18 @@ defmodule Pleroma.User do end end - def get_or_create_instance_user do - relay_uri = "#{Pleroma.Web.Endpoint.url()}/relay" - - if user = get_cached_by_ap_id(relay_uri) do + @doc "Creates an internal service actor by URI if missing. Optionally takes nickname for addressing." + def get_or_create_service_actor_by_ap_id(uri, nickname \\ nil) do + if user = get_cached_by_ap_id(uri) do user else changes = %User{info: %User.Info{}} |> cast(%{}, [:ap_id, :nickname, :local]) - |> put_change(:ap_id, relay_uri) - |> put_change(:nickname, nil) + |> put_change(:ap_id, uri) + |> put_change(:nickname, nickname) |> put_change(:local, true) - |> put_change(:follower_address, relay_uri <> "/followers") + |> put_change(:follower_address, uri <> "/followers") {:ok, user} = Repo.insert(changes) user @@ -1411,4 +1410,8 @@ defmodule Pleroma.User do end defp put_password_hash(changeset), do: changeset + + def is_internal_user?(%User{nickname: nil}), do: true + def is_internal_user?(%User{local: true, nickname: "internal." <> _}), do: true + def is_internal_user?(_), do: false end |