diff options
Diffstat (limited to 'lib/pleroma/user.ex')
-rw-r--r-- | lib/pleroma/user.ex | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 09ea80793..8115fb0fa 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -1770,7 +1770,7 @@ defmodule Pleroma.User do def fetch_by_ap_id(ap_id, opts \\ []), do: ActivityPub.make_user_from_ap_id(ap_id, opts) - def get_or_fetch_by_ap_id(ap_id, opts \\ []) do + def get_or_fetch_by_ap_id(ap_id, opts \\ []) when is_binary(ap_id) do cached_user = get_cached_by_ap_id(ap_id) maybe_fetched_user = needs_update?(cached_user) && fetch_by_ap_id(ap_id, opts) @@ -1787,6 +1787,13 @@ defmodule Pleroma.User do end end + def get_or_fetch_by_ap_id!(ap_id, opts \\ []) when is_binary(ap_id) do + case get_or_fetch_by_ap_id(ap_id, opts) do + {:ok, user} -> user + _ -> nil + end + end + @doc """ Creates an internal service actor by URI if missing. Optionally takes nickname for addressing. @@ -2097,9 +2104,9 @@ defmodule Pleroma.User do } end - def ensure_keys_present(%{keys: keys} = user) when not is_nil(keys), do: {:ok, user} + def ensure_keys_present(%User{keys: keys} = user) when not is_nil(keys), do: {:ok, user} - def ensure_keys_present(%User{} = user) do + def ensure_keys_present(%User{local: true} = user) do with {:ok, pem} <- Keys.generate_rsa_pem() do user |> cast(%{keys: pem}, [:keys]) @@ -2108,6 +2115,8 @@ defmodule Pleroma.User do end end + def ensure_keys_present(%User{local: false}), do: {:error, :none} + def get_ap_ids_by_nicknames(nicknames) do from(u in User, where: u.nickname in ^nicknames, |