X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fuser.ex;h=9ff52c94f2159d79acd1cf8c42ce55686a28fe63;hb=07ea4d73e12c65cf3fd5c194a8eb1f27900ed17f;hp=dc6c661eaf03486f79d99a1045f80b24e33b75d0;hpb=ff89d4526a4783fc5283e1d4814f55c2a87d94b1;p=akkoma diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index dc6c661ea..9ff52c94f 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -194,17 +194,6 @@ defmodule Pleroma.User do has_many(incoming_relation_source, through: [incoming_relation, :source]) end - # `:blocks` is deprecated (replaced with `blocked_users` relation) - field(:blocks, {:array, :string}, default: []) - # `:mutes` is deprecated (replaced with `muted_users` relation) - field(:mutes, {:array, :string}, default: []) - # `:muted_reblogs` is deprecated (replaced with `reblog_muted_users` relation) - field(:muted_reblogs, {:array, :string}, default: []) - # `:muted_notifications` is deprecated (replaced with `notification_muted_users` relation) - field(:muted_notifications, {:array, :string}, default: []) - # `:subscribers` is deprecated (replaced with `subscriber_users` relation) - field(:subscribers, {:array, :string}, default: []) - embeds_one( :multi_factor_authentication_settings, MFA.Settings, @@ -674,34 +663,6 @@ defmodule Pleroma.User do @spec force_password_reset(User.t()) :: {:ok, User.t()} | {:error, Ecto.Changeset.t()} def force_password_reset(user), do: update_password_reset_pending(user, true) - # 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]) - else - params - end - - struct - |> cast(params, [ - :name, - :nickname, - :email, - :accepts_chat_messages - ]) - |> validate_required([:name, :nickname]) - |> unique_constraint(:nickname) - |> validate_exclusion(:nickname, Config.get([User, :restricted_nicknames])) - |> validate_format(:nickname, local_nickname_regex()) - |> put_ap_id() - |> unique_constraint(:ap_id) - |> put_following_and_follower_and_featured_address() - end - def register_changeset(struct, params \\ %{}, opts \\ []) do bio_limit = Config.get([:instance, :user_bio_length], 5000) name_limit = Config.get([:instance, :user_name_length], 100) @@ -2288,6 +2249,38 @@ defmodule Pleroma.User do |> update_and_set_cache() end + def alias_users(user) do + user.also_known_as + |> Enum.map(&User.get_cached_by_ap_id/1) + |> Enum.filter(fn user -> user != nil end) + end + + def add_alias(user, new_alias_user) do + current_aliases = user.also_known_as || [] + new_alias_ap_id = new_alias_user.ap_id + + if new_alias_ap_id in current_aliases do + {:ok, user} + else + user + |> cast(%{also_known_as: current_aliases ++ [new_alias_ap_id]}, [:also_known_as]) + |> update_and_set_cache() + end + end + + def delete_alias(user, alias_user) do + current_aliases = user.also_known_as || [] + alias_ap_id = alias_user.ap_id + + if alias_ap_id in current_aliases do + user + |> cast(%{also_known_as: current_aliases -- [alias_ap_id]}, [:also_known_as]) + |> update_and_set_cache() + else + {:error, :no_such_alias} + end + end + # Internal function; public one is `deactivate/2` defp set_activation_status(user, status) do user