X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fuser.ex;h=869a3eb1b5b77352b41b3920da7072ab488a2eeb;hb=6a184115a2431727b5039c1c726a8afc5eef228c;hp=9b2433674d87aa52939ed0d7d70989d6aaeec50d;hpb=373753e595de96a0492edfc6cc180c3e47696a55;p=akkoma diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 9b2433674..869a3eb1b 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -6,6 +6,7 @@ defmodule Pleroma.User do alias Comeonin.Pbkdf2 alias Pleroma.Web.{OStatus, Websub} alias Pleroma.Web.ActivityPub.ActivityPub + alias Pleroma.Web.ActivityPub.Utils schema "users" do field :bio, :string @@ -63,13 +64,14 @@ defmodule Pleroma.User do @email_regex ~r/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/ def remote_user_creation(params) do - changeset = %User{} - |> cast(params, [:bio, :name, :ap_id, :nickname, :info]) - |> validate_required([:bio, :name, :ap_id, :nickname]) + %User{} + |> cast(params, [:bio, :name, :ap_id, :nickname, :info, :avatar]) + |> validate_required([:name, :ap_id, :nickname]) |> unique_constraint(:nickname) |> validate_format(:nickname, @email_regex) |> validate_length(:bio, max: 1000) |> validate_length(:name, max: 100) + |> put_change(:local, false) end def register_changeset(struct, params \\ %{}) do @@ -103,7 +105,7 @@ defmodule Pleroma.User do {:error, "Could not follow user: #{followed.nickname} is already on your list."} else - if !followed.local do + if !followed.local && follower.local do Websub.subscribe(follower, followed) end @@ -125,7 +127,7 @@ defmodule Pleroma.User do { :ok, follower } = follower |> follow_changeset(%{following: following}) |> Repo.update - { :ok, follower, ActivityPub.fetch_latest_follow(follower, followed)} + { :ok, follower, Utils.fetch_latest_follow(follower, followed)} else {:error, "Not subscribed!"} end @@ -135,9 +137,13 @@ defmodule Pleroma.User do Enum.member?(follower.following, User.ap_followers(followed)) end + def get_by_ap_id(ap_id) do + Repo.get_by(User, ap_id: ap_id) + end + def get_cached_by_ap_id(ap_id) do key = "ap_id:#{ap_id}" - Cachex.get!(:user_cache, key, fallback: fn(_) -> Repo.get_by(User, ap_id: ap_id) end) + Cachex.get!(:user_cache, key, fallback: fn(_) -> get_by_ap_id(ap_id) end) end def get_cached_by_nickname(nickname) do