diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/pleroma/config.ex | 10 | ||||
| -rw-r--r-- | lib/pleroma/user.ex | 8 | ||||
| -rw-r--r-- | lib/pleroma/web/activity_pub/visibility.ex | 7 | ||||
| -rw-r--r-- | lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex | 5 | ||||
| -rw-r--r-- | lib/pleroma/web/preload/timelines.ex | 2 | 
5 files changed, 21 insertions, 11 deletions
| diff --git a/lib/pleroma/config.ex b/lib/pleroma/config.ex index a8329cc1e..97f877595 100644 --- a/lib/pleroma/config.ex +++ b/lib/pleroma/config.ex @@ -81,6 +81,16 @@ defmodule Pleroma.Config do      Application.delete_env(:pleroma, key)    end +  def restrict_unauthenticated_access?(resource, kind) do +    setting = get([:restrict_unauthenticated, resource, kind]) + +    if setting in [nil, :if_instance_is_private] do +      !get!([:instance, :public]) +    else +      setting +    end +  end +    def oauth_consumer_strategies, do: get([:auth, :oauth_consumer_strategies], [])    def oauth_consumer_enabled?, do: oauth_consumer_strategies() != [] diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index d1436a688..ac065e9dc 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -311,10 +311,12 @@ defmodule Pleroma.User do    def visible_for(_, _), do: :invisible -  defp restrict_unauthenticated?(%User{local: local}) do -    config_key = if local, do: :local, else: :remote +  defp restrict_unauthenticated?(%User{local: true}) do +    Config.restrict_unauthenticated_access?(:profiles, :local) +  end -    Config.get([:restrict_unauthenticated, :profiles, config_key], false) +  defp restrict_unauthenticated?(%User{local: _}) do +    Config.restrict_unauthenticated_access?(:profiles, :remote)    end    defp visible_account_status(user) do diff --git a/lib/pleroma/web/activity_pub/visibility.ex b/lib/pleroma/web/activity_pub/visibility.ex index 343f41caa..5c349bb7a 100644 --- a/lib/pleroma/web/activity_pub/visibility.ex +++ b/lib/pleroma/web/activity_pub/visibility.ex @@ -59,12 +59,9 @@ defmodule Pleroma.Web.ActivityPub.Visibility do    end    def visible_for_user?(%{local: local} = activity, nil) do -    cfg_key = -      if local, -        do: :local, -        else: :remote +    cfg_key = if local, do: :local, else: :remote -    if Pleroma.Config.get([:restrict_unauthenticated, :activities, cfg_key]), +    if Pleroma.Config.restrict_unauthenticated_access?(:activities, cfg_key),        do: false,        else: is_public?(activity)    end diff --git a/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex b/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex index ab7b1d6aa..9244316ed 100644 --- a/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex @@ -8,6 +8,7 @@ defmodule Pleroma.Web.MastodonAPI.TimelineController do    import Pleroma.Web.ControllerHelper,      only: [add_link_headers: 2, add_link_headers: 3] +  alias Pleroma.Config    alias Pleroma.Pagination    alias Pleroma.Plugs.EnsurePublicOrAuthenticatedPlug    alias Pleroma.Plugs.OAuthScopesPlug @@ -89,11 +90,11 @@ defmodule Pleroma.Web.MastodonAPI.TimelineController do    end    defp restrict_unauthenticated?(true = _local_only) do -    Pleroma.Config.get([:restrict_unauthenticated, :timelines, :local]) +    Config.restrict_unauthenticated_access?(:timelines, :local)    end    defp restrict_unauthenticated?(_) do -    Pleroma.Config.get([:restrict_unauthenticated, :timelines, :federated]) +    Config.restrict_unauthenticated_access?(:timelines, :federated)    end    # GET /api/v1/timelines/public diff --git a/lib/pleroma/web/preload/timelines.ex b/lib/pleroma/web/preload/timelines.ex index 57de04051..b279a865d 100644 --- a/lib/pleroma/web/preload/timelines.ex +++ b/lib/pleroma/web/preload/timelines.ex @@ -16,7 +16,7 @@ defmodule Pleroma.Web.Preload.Providers.Timelines do    end    def build_public_tag(acc, params) do -    if Pleroma.Config.get([:restrict_unauthenticated, :timelines, :federated], true) do +    if Pleroma.Config.restrict_unauthenticated_access?(:timelines, :federated) do        acc      else        Map.put(acc, @public_url, public_timeline(params)) | 
