X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fpleroma%2Fuser.ex;h=4383f8f536fd69036cbae00558f3fc58bd3b5bf7;hb=2e433e106f52d47f3bc9e533474b7e4d74389535;hp=a9caec55269cd69f864b72b658c25c8b650b4253;hpb=dc9f66749c85352e0d7761ae2b9b8663a3aa3e3a;p=akkoma diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index a9caec552..4383f8f53 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -145,7 +145,6 @@ defmodule Pleroma.User do field(:also_known_as, {:array, ObjectValidators.ObjectID}, default: []) field(:inbox, :string) field(:shared_inbox, :string) - field(:accepts_chat_messages, :boolean, default: nil) field(:last_active_at, :naive_datetime) field(:disclose_client, :boolean, default: true) field(:pinned_objects, :map, default: %{}) @@ -455,7 +454,6 @@ defmodule Pleroma.User do :invisible, :actor_type, :also_known_as, - :accepts_chat_messages, :pinned_objects ] ) @@ -516,7 +514,6 @@ defmodule Pleroma.User do :pleroma_settings_store, :is_discoverable, :actor_type, - :accepts_chat_messages, :disclose_client ] ) @@ -666,8 +663,6 @@ defmodule Pleroma.User do # Used to auto-register LDAP accounts which won't have a password hash stored locally def register_changeset_ldap(struct, params = %{password: password}) when is_nil(password) do - params = Map.put_new(params, :accepts_chat_messages, true) - params = if Map.has_key?(params, :email) do Map.put_new(params, :email, params[:email]) @@ -679,14 +674,14 @@ defmodule Pleroma.User do |> cast(params, [ :name, :nickname, - :email, - :accepts_chat_messages + :email ]) |> validate_required([:name, :nickname]) |> unique_constraint(:nickname) |> validate_exclusion(:nickname, Config.get([User, :restricted_nicknames])) |> validate_format(:nickname, local_nickname_regex()) |> put_ap_id() + |> put_keys() |> unique_constraint(:ap_id) |> put_following_and_follower_and_featured_address() end @@ -695,7 +690,6 @@ defmodule Pleroma.User do bio_limit = Config.get([:instance, :user_bio_length], 5000) name_limit = Config.get([:instance, :user_name_length], 100) reason_limit = Config.get([:instance, :registration_reason_length], 500) - params = Map.put_new(params, :accepts_chat_messages, true) confirmed? = if is_nil(opts[:confirmed]) do @@ -723,7 +717,6 @@ defmodule Pleroma.User do :password, :password_confirmation, :emoji, - :accepts_chat_messages, :registration_reason, :language ]) @@ -748,6 +741,7 @@ defmodule Pleroma.User do |> validate_length(:registration_reason, max: reason_limit) |> maybe_validate_required_email(opts[:external]) |> put_password_hash + |> put_keys() |> put_ap_id() |> unique_constraint(:ap_id) |> put_following_and_follower_and_featured_address() @@ -763,12 +757,17 @@ defmodule Pleroma.User do end end - defp put_ap_id(changeset) do + def put_keys(changeset) do + {:ok, pem} = Keys.generate_rsa_pem() + put_change(changeset, :keys, pem) + end + + def put_ap_id(changeset) do ap_id = ap_id(%User{nickname: get_field(changeset, :nickname)}) put_change(changeset, :ap_id, ap_id) end - defp put_following_and_follower_and_featured_address(changeset) do + def put_following_and_follower_and_featured_address(changeset) do user = %User{nickname: get_field(changeset, :nickname)} followers = ap_followers(user) following = ap_following(user) @@ -826,8 +825,7 @@ defmodule Pleroma.User do {:ok, user} <- set_cache(user), {:ok, _} <- maybe_send_registration_email(user), {:ok, _} <- maybe_send_welcome_email(user), - {:ok, _} <- maybe_send_welcome_message(user), - {:ok, _} <- maybe_send_welcome_chat_message(user) do + {:ok, _} <- maybe_send_welcome_message(user) do {:ok, user} end end @@ -861,15 +859,6 @@ defmodule Pleroma.User do end end - defp maybe_send_welcome_chat_message(user) do - if User.WelcomeChatMessage.enabled?() do - User.WelcomeChatMessage.post_message(user) - {:ok, :enqueued} - else - {:ok, :noop} - end - end - defp maybe_send_welcome_email(%User{email: email} = user) when is_binary(email) do if User.WelcomeEmail.enabled?() do User.WelcomeEmail.send_email(user) @@ -1491,13 +1480,19 @@ defmodule Pleroma.User do blocker end - # clear any requested follows as well + # clear any requested follows from both sides as well blocked = case CommonAPI.reject_follow_request(blocked, blocker) do {:ok, %User{} = updated_blocked} -> updated_blocked nil -> blocked end + blocker = + case CommonAPI.reject_follow_request(blocker, blocked) do + {:ok, %User{} = updated_blocker} -> updated_blocker + nil -> blocker + end + unsubscribe(blocked, blocker) unfollowing_blocked = Config.get([:activitypub, :unfollow_blocked], true) @@ -2078,7 +2073,7 @@ defmodule Pleroma.User do |> Enum.map(&String.downcase/1) end - defp local_nickname_regex do + def local_nickname_regex do if Config.get([:instance, :extended_nickname_format]) do @extended_local_nickname_regex else