summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/mix/tasks/pleroma/user.ex18
-rw-r--r--lib/pleroma/activity.ex8
-rw-r--r--lib/pleroma/notification.ex2
-rw-r--r--lib/pleroma/user.ex51
-rw-r--r--lib/pleroma/user/info.ex9
-rw-r--r--lib/pleroma/web/activity_pub/activity_pub.ex2
-rw-r--r--lib/pleroma/web/admin_api/admin_api_controller.ex10
-rw-r--r--lib/pleroma/web/router.ex1
-rw-r--r--lib/pleroma/web/twitter_api/controllers/util_controller.ex2
-rw-r--r--lib/pleroma/web/twitter_api/twitter_api.ex2
-rw-r--r--priv/repo/migrations/20190228121252_users_add_disabled_index.exs7
-rw-r--r--priv/repo/migrations/20190411094120_add_index_on_user_info_deactivated.exs7
12 files changed, 36 insertions, 83 deletions
diff --git a/lib/mix/tasks/pleroma/user.ex b/lib/mix/tasks/pleroma/user.ex
index 78493231c..441168df2 100644
--- a/lib/mix/tasks/pleroma/user.ex
+++ b/lib/mix/tasks/pleroma/user.ex
@@ -53,10 +53,6 @@ defmodule Mix.Tasks.Pleroma.User do
mix pleroma.user toggle_activated NICKNAME
- ## Disable or enable the user's account.
-
- mix pleroma.user toggle_disabled NICKNAME
-
## Unsubscribe local users from user's account and deactivate it
mix pleroma.user unsubscribe NICKNAME
@@ -190,20 +186,6 @@ defmodule Mix.Tasks.Pleroma.User do
end
end
- def run(["toggle_disabled", nickname]) do
- Common.start_pleroma()
-
- case User.get_by_nickname(nickname) do
- %User{} = user ->
- {:ok, user} = User.disable(user, !user.info.disabled)
- status = if(user.info.disabled, do: "ON", else: "OFF")
- Mix.shell().info("Disabled status of #{nickname}: #{status}")
-
- _ ->
- Mix.shell().error("No user #{nickname}")
- end
- end
-
def run(["reset_password", nickname]) do
Common.start_pleroma()
diff --git a/lib/pleroma/activity.ex b/lib/pleroma/activity.ex
index c8c7f0d04..d06fd917d 100644
--- a/lib/pleroma/activity.ex
+++ b/lib/pleroma/activity.ex
@@ -100,7 +100,7 @@ defmodule Pleroma.Activity do
def get_by_id(id) do
Activity
|> where([a], a.id == ^id)
- |> restrict_disabled_users()
+ |> restrict_deactivated_users()
|> Repo.one()
end
@@ -169,7 +169,7 @@ defmodule Pleroma.Activity do
def get_create_by_object_ap_id(ap_id) when is_binary(ap_id) do
create_by_object_ap_id(ap_id)
- |> restrict_disabled_users()
+ |> restrict_deactivated_users()
|> Repo.one()
end
@@ -296,11 +296,11 @@ defmodule Pleroma.Activity do
end
end
- def restrict_disabled_users(query) do
+ def restrict_deactivated_users(query) do
from(activity in query,
where:
fragment(
- "? not in (SELECT ap_id FROM users WHERE info->'disabled' @> 'true')",
+ "? not in (SELECT ap_id FROM users WHERE info->'deactivated' @> 'true')",
activity.actor
)
)
diff --git a/lib/pleroma/notification.ex b/lib/pleroma/notification.ex
index 7de2d4c18..941218eea 100644
--- a/lib/pleroma/notification.ex
+++ b/lib/pleroma/notification.ex
@@ -36,7 +36,7 @@ defmodule Pleroma.Notification do
|> where(
[n, a],
fragment(
- "? not in (SELECT ap_id FROM users WHERE info->'disabled' @> 'true')",
+ "? not in (SELECT ap_id FROM users WHERE info->'deactivated' @> 'true')",
a.actor
)
)
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex
index 1f2aca235..c08d3a171 100644
--- a/lib/pleroma/user.ex
+++ b/lib/pleroma/user.ex
@@ -117,9 +117,9 @@ defmodule Pleroma.User do
}
end
- defp restrict_disabled(query) do
+ defp restrict_deactivated(query) do
from(u in query,
- where: not fragment("? \\? 'disabled' AND ?->'disabled' @> 'true'", u.info, u.info)
+ where: not fragment("? \\? 'deactivated' AND ?->'deactivated' @> 'true'", u.info, u.info)
)
end
@@ -130,7 +130,7 @@ defmodule Pleroma.User do
where: u.follower_address in ^following,
where: u.id != ^id
)
- |> restrict_disabled()
+ |> restrict_deactivated()
|> Repo.aggregate(:count, :id)
end
@@ -584,7 +584,7 @@ defmodule Pleroma.User do
where: fragment("? <@ ?", ^[follower_address], u.following),
where: u.id != ^id
)
- |> restrict_disabled()
+ |> restrict_deactivated()
end
def get_followers_query(user, page) do
@@ -612,7 +612,7 @@ defmodule Pleroma.User do
where: u.follower_address in ^following,
where: u.id != ^id
)
- |> restrict_disabled()
+ |> restrict_deactivated()
end
def get_friends_query(user, page) do
@@ -736,7 +736,7 @@ defmodule Pleroma.User do
|> where([u], ^user.follower_address in u.following)
|> where([u], u.id != ^user.id)
|> select([u], %{count: count(u.id)})
- |> restrict_disabled()
+ |> restrict_deactivated()
User
|> where(id: ^user.id)
@@ -887,7 +887,7 @@ defmodule Pleroma.User do
^processed_query
)
)
- |> restrict_disabled()
+ |> restrict_deactivated()
end
defp trigram_search_subquery(term) do
@@ -906,7 +906,7 @@ defmodule Pleroma.User do
},
where: fragment("trim(? || ' ' || coalesce(?, '')) % ?", u.nickname, u.name, ^term)
)
- |> restrict_disabled()
+ |> restrict_deactivated()
end
def blocks_import(%User{} = blocker, blocked_identifiers) when is_list(blocked_identifiers) do
@@ -1150,13 +1150,24 @@ defmodule Pleroma.User do
)
end
+
+ def deactivate_async(user, status \\ true) do
+ PleromaJobQueue.enqueue(:user, __MODULE__, [:deactivate_async, user, status])
+ end
+
+ def perform(:deactivate_async, user, status), do: deactivate(user, status)
+
def deactivate(%User{} = user, status \\ true) do
info_cng = User.Info.set_activation_status(user.info, status)
- user
+ with {:ok, user} <- user
|> change()
|> put_embed(:info, info_cng)
- |> update_and_set_cache()
+ |> update_and_set_cache(),
+ {:ok, friends} <- User.get_friends(user) do
+ Enum.each(friends, &update_follower_count(&1))
+ {:ok, user}
+ end
end
def update_notification_settings(%User{} = user, settings \\ %{}) do
@@ -1199,26 +1210,6 @@ defmodule Pleroma.User do
{:ok, user}
end
- def disable_async(user, status \\ true) do
- PleromaJobQueue.enqueue(:user, __MODULE__, [:disable_async, user, status])
- end
-
- def disable(%User{} = user, status \\ true) do
- with {:ok, user} <- User.deactivate(user, status),
- info_cng <- User.Info.set_disabled_status(user.info, status),
- {:ok, user} <-
- user
- |> change()
- |> put_embed(:info, info_cng)
- |> update_and_set_cache(),
- {:ok, friends} <- User.get_friends(user) do
- Enum.each(friends, &update_follower_count(&1))
- {:ok, user}
- end
- end
-
- def perform(:disable_async, user, status), do: disable(user, status)
-
def html_filter_policy(%User{info: %{no_rich_text: true}}) do
Pleroma.HTML.Scrubber.TwitterText
end
diff --git a/lib/pleroma/user/info.ex b/lib/pleroma/user/info.ex
index 07825a1c4..5afa7988c 100644
--- a/lib/pleroma/user/info.ex
+++ b/lib/pleroma/user/info.ex
@@ -40,7 +40,6 @@ defmodule Pleroma.User.Info do
field(:hide_follows, :boolean, default: false)
field(:pinned_activities, {:array, :string}, default: [])
field(:flavour, :string, default: nil)
- field(:disabled, :boolean, default: false)
field(:notification_settings, :map,
default: %{"remote" => true, "local" => true, "followers" => true, "follows" => true}
@@ -76,14 +75,6 @@ defmodule Pleroma.User.Info do
|> validate_required([:notification_settings])
end
- def set_disabled_status(info, disabled) do
- params = %{disabled: disabled}
-
- info
- |> cast(params, [:disabled])
- |> validate_required([:disabled])
- end
-
def add_to_note_count(info, number) do
set_note_count(info, info.note_count + number)
end
diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex
index dd51d63c8..e749a80aa 100644
--- a/lib/pleroma/web/activity_pub/activity_pub.ex
+++ b/lib/pleroma/web/activity_pub/activity_pub.ex
@@ -804,7 +804,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
|> restrict_reblogs(opts)
|> restrict_pinned(opts)
|> restrict_muted_reblogs(opts)
- |> Activity.restrict_disabled_users()
+ |> Activity.restrict_deactivated_users()
end
def fetch_activities(recipients, opts \\ %{}) do
diff --git a/lib/pleroma/web/admin_api/admin_api_controller.ex b/lib/pleroma/web/admin_api/admin_api_controller.ex
index fb43d0b01..70a5b5c5d 100644
--- a/lib/pleroma/web/admin_api/admin_api_controller.ex
+++ b/lib/pleroma/web/admin_api/admin_api_controller.ex
@@ -75,16 +75,6 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
end
end
- def user_toggle_disabled(conn, %{"nickname" => nickname}) do
- user = User.get_by_nickname(nickname)
-
- {:ok, updated_user} = User.disable(user, !user.info.disabled)
-
- conn
- |> put_view(AccountView)
- |> render("show.json", %{user: updated_user})
- end
-
def user_toggle_activation(conn, %{"nickname" => nickname}) do
user = User.get_by_nickname(nickname)
diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex
index dd23d7fd5..c331098b4 100644
--- a/lib/pleroma/web/router.ex
+++ b/lib/pleroma/web/router.ex
@@ -153,7 +153,6 @@ defmodule Pleroma.Web.Router do
delete("/user", AdminAPIController, :user_delete)
patch("/users/:nickname/toggle_activation", AdminAPIController, :user_toggle_activation)
- patch("/users/:nickname/toggle_disabled", AdminAPIController, :user_toggle_disabled)
post("/user", AdminAPIController, :user_create)
put("/users/tag", AdminAPIController, :tag_users)
delete("/users/tag", AdminAPIController, :untag_users)
diff --git a/lib/pleroma/web/twitter_api/controllers/util_controller.ex b/lib/pleroma/web/twitter_api/controllers/util_controller.ex
index 317f2b0ff..44f4b183b 100644
--- a/lib/pleroma/web/twitter_api/controllers/util_controller.ex
+++ b/lib/pleroma/web/twitter_api/controllers/util_controller.ex
@@ -358,7 +358,7 @@ defmodule Pleroma.Web.TwitterAPI.UtilController do
def disable_account(%{assigns: %{user: user}} = conn, params) do
case CommonAPI.Utils.confirm_current_password(user, params["password"]) do
{:ok, user} ->
- User.disable_async(user)
+ User.deactivate_async(user)
json(conn, %{status: "success"})
{:error, msg} ->
diff --git a/lib/pleroma/web/twitter_api/twitter_api.ex b/lib/pleroma/web/twitter_api/twitter_api.ex
index 156f5d40f..bf1051afd 100644
--- a/lib/pleroma/web/twitter_api/twitter_api.ex
+++ b/lib/pleroma/web/twitter_api/twitter_api.ex
@@ -235,7 +235,7 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
nil ->
{:error, "No user with such user_id"}
- %User{info: %{disabled: true}} ->
+ %User{info: %{deactivated: true}} ->
{:error, "User has been disabled"}
user ->
diff --git a/priv/repo/migrations/20190228121252_users_add_disabled_index.exs b/priv/repo/migrations/20190228121252_users_add_disabled_index.exs
deleted file mode 100644
index 7b921d3e7..000000000
--- a/priv/repo/migrations/20190228121252_users_add_disabled_index.exs
+++ /dev/null
@@ -1,7 +0,0 @@
-defmodule Pleroma.Repo.Migrations.UsersAddDisabledIndex do
- use Ecto.Migration
-
- def change do
- create(index(:users, ["(info->'disabled')"], name: :users_disabled_index, using: :gin))
- end
-end
diff --git a/priv/repo/migrations/20190411094120_add_index_on_user_info_deactivated.exs b/priv/repo/migrations/20190411094120_add_index_on_user_info_deactivated.exs
new file mode 100644
index 000000000..d701dcecc
--- /dev/null
+++ b/priv/repo/migrations/20190411094120_add_index_on_user_info_deactivated.exs
@@ -0,0 +1,7 @@
+defmodule Pleroma.Repo.Migrations.AddIndexOnUserInfoDeactivated do
+ use Ecto.Migration
+
+ def change do
+ create(index(:users, ["(info->'deactivated')"], name: :users_deactivated_index, using: :gin))
+ end
+end