diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/pleroma/user.ex | 19 | ||||
| -rw-r--r-- | lib/pleroma/web/mastodon_api/controllers/account_controller.ex | 4 | ||||
| -rw-r--r-- | lib/pleroma/web/mastodon_api/views/account_view.ex | 2 | 
3 files changed, 17 insertions, 8 deletions
| diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 7a2558c29..5052f7b97 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -272,7 +272,7 @@ defmodule Pleroma.User do    def account_status(%User{}), do: :active    @spec visible_for(User.t(), User.t() | nil) :: -          boolean() +          :visible            | :invisible            | :restricted_unauthenticated            | :deactivated @@ -281,7 +281,7 @@ defmodule Pleroma.User do    def visible_for(%User{invisible: true}, _), do: :invisible -  def visible_for(%User{id: user_id}, %User{id: user_id}), do: true +  def visible_for(%User{id: user_id}, %User{id: user_id}), do: :visible    def visible_for(%User{} = user, nil) do      if restrict_unauthenticated?(user) do @@ -292,10 +292,14 @@ defmodule Pleroma.User do    end    def visible_for(%User{} = user, for_user) do -    superuser?(for_user) || visible_account_status(user) +    if superuser?(for_user) do +      :visible +    else +      visible_account_status(user) +    end    end -  def visible_for(_, _), do: false +  def visible_for(_, _), do: :invisible    defp restrict_unauthenticated?(%User{local: local}) do      config_key = if local, do: :local, else: :remote @@ -305,7 +309,12 @@ defmodule Pleroma.User do    defp visible_account_status(user) do      status = account_status(user) -    status in [:active, :password_reset_pending] || status + +    if status in [:active, :password_reset_pending] do +      :visible +    else +      status +    end    end    @spec superuser?(User.t()) :: boolean() diff --git a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex index 1edc0d96a..8727faab7 100644 --- a/lib/pleroma/web/mastodon_api/controllers/account_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/account_controller.ex @@ -221,7 +221,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do    @doc "GET /api/v1/accounts/:id"    def show(%{assigns: %{user: for_user}} = conn, %{id: nickname_or_id}) do      with %User{} = user <- User.get_cached_by_nickname_or_id(nickname_or_id, for: for_user), -         true <- User.visible_for(user, for_user) do +         :visible <- User.visible_for(user, for_user) do        render(conn, "show.json", user: user, for: for_user)      else        error -> user_visibility_error(conn, error) @@ -231,7 +231,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountController do    @doc "GET /api/v1/accounts/:id/statuses"    def statuses(%{assigns: %{user: reading_user}} = conn, params) do      with %User{} = user <- User.get_cached_by_nickname_or_id(params.id, for: reading_user), -         true <- User.visible_for(user, reading_user) do +         :visible <- User.visible_for(user, reading_user) do        params =          params          |> Map.delete(:tagged) diff --git a/lib/pleroma/web/mastodon_api/views/account_view.ex b/lib/pleroma/web/mastodon_api/views/account_view.ex index 8e723d013..4a1508b22 100644 --- a/lib/pleroma/web/mastodon_api/views/account_view.ex +++ b/lib/pleroma/web/mastodon_api/views/account_view.ex @@ -35,7 +35,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountView do    end    def render("show.json", %{user: user} = opts) do -    if User.visible_for(user, opts[:for]) == true do +    if User.visible_for(user, opts[:for]) == :visible do        do_render("show.json", opts)      else        %{} | 
