diff options
author | Roman Chvanikov <chvanikoff@pm.me> | 2019-07-20 01:03:25 +0300 |
---|---|---|
committer | Roman Chvanikov <chvanikoff@pm.me> | 2019-07-20 01:03:25 +0300 |
commit | 36049f08efadb5f6f727753ecc1f7be6a5b4e3d8 (patch) | |
tree | 2f1e1b5a20ad654cda4021115e621887d2735959 /lib/pleroma/user.ex | |
parent | e7c175c943e9e3f53df76d812c09cfeffdb1c56b (diff) | |
parent | 33729bbb2834bfa1f223b11d47dc8e3230d47657 (diff) | |
download | pleroma-36049f08efadb5f6f727753ecc1f7be6a5b4e3d8.tar.gz |
Merge develop
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 746f78168..cf6aee547 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -1158,19 +1158,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 @@ -1486,4 +1485,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 |