diff options
author | feld <feld@feld.me> | 2019-11-06 12:24:41 +0000 |
---|---|---|
committer | feld <feld@feld.me> | 2019-11-06 12:24:41 +0000 |
commit | 8b194641764b06856082baf34a94e2e4875b61eb (patch) | |
tree | 49ed91ecaf6ea251e87b2cf0868a586146e2f277 /lib | |
parent | be6e5e017e91e26f7a1c41d9679409cb1b8347f1 (diff) | |
parent | 2cbfa256fd911b66a28c78008d1d622bfdb5d345 (diff) | |
download | pleroma-8b194641764b06856082baf34a94e2e4875b61eb.tar.gz |
Merge branch 'feature/multiple-users-force-password-reset' into 'develop'
Force password reset for multiple users
Closes admin-fe#46
See merge request pleroma/pleroma!1928
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/moderation_log.ex | 11 | ||||
-rw-r--r-- | lib/pleroma/web/admin_api/admin_api_controller.ex | 12 | ||||
-rw-r--r-- | lib/pleroma/web/router.ex | 2 |
3 files changed, 21 insertions, 4 deletions
diff --git a/lib/pleroma/moderation_log.ex b/lib/pleroma/moderation_log.ex index 9dc4a94c9..ffa5dc25d 100644 --- a/lib/pleroma/moderation_log.ex +++ b/lib/pleroma/moderation_log.ex @@ -616,6 +616,17 @@ defmodule Pleroma.ModerationLog do "@#{actor_nickname} deleted status ##{subject_id}" end + @spec get_log_entry_message(ModerationLog) :: String.t() + def get_log_entry_message(%ModerationLog{ + data: %{ + "actor" => %{"nickname" => actor_nickname}, + "action" => "force_password_reset", + "subject" => subjects + } + }) do + "@#{actor_nickname} force password reset for users: #{users_to_nicknames_string(subjects)}" + end + defp nicknames_to_string(nicknames) do nicknames |> Enum.map(&"@#{&1}") diff --git a/lib/pleroma/web/admin_api/admin_api_controller.ex b/lib/pleroma/web/admin_api/admin_api_controller.ex index b47618bde..30fc01755 100644 --- a/lib/pleroma/web/admin_api/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/admin_api_controller.ex @@ -607,10 +607,16 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do end @doc "Force password reset for a given user" - def force_password_reset(conn, %{"nickname" => nickname}) do - (%User{local: true} = user) = User.get_cached_by_nickname(nickname) + def force_password_reset(%{assigns: %{user: admin}} = conn, %{"nicknames" => nicknames}) do + users = nicknames |> Enum.map(&User.get_cached_by_nickname/1) - User.force_password_reset_async(user) + Enum.map(users, &User.force_password_reset_async/1) + + ModerationLog.insert_log(%{ + actor: admin, + subject: users, + action: "force_password_reset" + }) json_response(conn, :no_content, "") end diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index f69c5c2bc..8fb4aec13 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -171,7 +171,7 @@ defmodule Pleroma.Web.Router do post("/users/email_invite", AdminAPIController, :email_invite) get("/users/:nickname/password_reset", AdminAPIController, :get_password_reset) - patch("/users/:nickname/force_password_reset", AdminAPIController, :force_password_reset) + patch("/users/force_password_reset", AdminAPIController, :force_password_reset) get("/users", AdminAPIController, :list_users) get("/users/:nickname", AdminAPIController, :user_show) |