forked from AkkomaGang/akkoma
Compare commits
3 commits
develop
...
disable-lo
Author | SHA1 | Date | |
---|---|---|---|
0ae18c5ef7 | |||
01f63afb81 | |||
53485639e8 |
4 changed files with 38 additions and 5 deletions
|
@ -273,7 +273,8 @@
|
|||
local_bubble: [],
|
||||
max_frontend_settings_json_chars: 100_000,
|
||||
export_prometheus_metrics: true,
|
||||
federated_timeline_available: true
|
||||
federated_timeline_available: true,
|
||||
local_timeline_available: true
|
||||
|
||||
config :pleroma, :welcome,
|
||||
direct_message: [
|
||||
|
|
|
@ -65,6 +65,7 @@ To add configuration to your config file, you can copy it from the base config.
|
|||
* `export_prometheus_metrics`: Enable prometheus metrics, served at `/api/v1/akkoma/metrics`, requiring the `admin:metrics` oauth scope.
|
||||
* `privileged_staff`: Set to `true` to give moderators access to a few higher responsibility actions.
|
||||
* `federated_timeline_available`: Set to `false` to remove access to the federated timeline for all users.
|
||||
* `local_timeline_available`: Set to `false` to remove access to the local timeline for all users.
|
||||
|
||||
## :database
|
||||
* `improved_hashtag_timeline`: Setting to force toggle / force disable improved hashtags timeline. `:enabled` forces hashtags to be fetched from `hashtags` table for hashtags timeline. `:disabled` forces object-embedded hashtags to be used (slower). Keep it `:auto` for automatic behaviour (it is auto-set to `:enabled` [unless overridden] when HashtagsTableMigrator completes).
|
||||
|
|
|
@ -122,8 +122,14 @@ def public(%{assigns: %{user: user}} = conn, params) do
|
|||
local_only = params[:local]
|
||||
timeline_type = if local_only, do: :local, else: :federated
|
||||
|
||||
timeline_enabled =
|
||||
case timeline_type do
|
||||
:local -> Config.get([:instance, :local_timeline_available], true)
|
||||
:federated -> Config.get([:instance, :federated_timeline_available], true)
|
||||
end
|
||||
|
||||
with {:enabled, true} <-
|
||||
{:enabled, local_only || Config.get([:instance, :federated_timeline_available], true)},
|
||||
{:enabled, timeline_enabled},
|
||||
{:authenticated, true} <-
|
||||
{:authenticated, !(is_nil(user) and restrict_unauthenticated?(timeline_type))} do
|
||||
Logger.debug("TimelineController.public: fetching activities")
|
||||
|
@ -152,9 +158,15 @@ def public(%{assigns: %{user: user}} = conn, params) do
|
|||
)
|
||||
else
|
||||
{:enabled, false} ->
|
||||
error_msg =
|
||||
case timeline_type do
|
||||
:local -> "Local timeline is disabled"
|
||||
:federated -> "Federated timeline is disabled"
|
||||
end
|
||||
|
||||
conn
|
||||
|> put_status(404)
|
||||
|> json(%{error: "Federated timeline is disabled"})
|
||||
|> json(%{error: error_msg})
|
||||
|
||||
{:authenticated, false} ->
|
||||
fail_on_bad_auth(conn)
|
||||
|
|
|
@ -409,7 +409,7 @@ test "should not return local-only posts for anonymous users" do
|
|||
assert [] = result
|
||||
end
|
||||
|
||||
test "should return 404 if disabled" do
|
||||
test "should return 404 if federated timeline disabled" do
|
||||
clear_config([:instance, :federated_timeline_available], false)
|
||||
|
||||
result =
|
||||
|
@ -420,7 +420,26 @@ test "should return 404 if disabled" do
|
|||
assert %{"error" => "Federated timeline is disabled"} = result
|
||||
end
|
||||
|
||||
test "should not return 404 if local is specified" do
|
||||
test "should not return 404 if local timeline disabled" do
|
||||
clear_config([:instance, :local_timeline_available], false)
|
||||
|
||||
build_conn()
|
||||
|> get("/api/v1/timelines/public")
|
||||
|> json_response_and_validate_schema(200)
|
||||
end
|
||||
|
||||
test "should return 404 if local is specified and local timeline disabled" do
|
||||
clear_config([:instance, :local_timeline_available], false)
|
||||
|
||||
result =
|
||||
build_conn()
|
||||
|> get("/api/v1/timelines/public?local=true")
|
||||
|> json_response_and_validate_schema(404)
|
||||
|
||||
assert %{"error" => "Local timeline is disabled"} = result
|
||||
end
|
||||
|
||||
test "should not return 404 if local is specified and federated timeline disabled" do
|
||||
clear_config([:instance, :federated_timeline_available], false)
|
||||
|
||||
build_conn()
|
||||
|
|
Loading…
Reference in a new issue