[#2332] Misc. improvements per code change requests.
[akkoma] / lib / pleroma / web / mongooseim / mongoose_im_controller.ex
index f8c634653f8dc21815e1e6e2a2e6eb5f1e1a7aa1..04d823b362a7d807972340330c702f628f9102c9 100644 (file)
@@ -1,12 +1,17 @@
 # Pleroma: A lightweight social networking server
-# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
+# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
 # SPDX-License-Identifier: AGPL-3.0-only
 
 defmodule Pleroma.Web.MongooseIM.MongooseIMController do
   use Pleroma.Web, :controller
+
   alias Comeonin.Pbkdf2
-  alias Pleroma.User
+  alias Pleroma.Plugs.RateLimiter
   alias Pleroma.Repo
+  alias Pleroma.User
+
+  plug(RateLimiter, [name: :authentication] when action in [:user_exists, :check_password])
+  plug(RateLimiter, [name: :authentication, params: ["user"]] when action == :check_password)
 
   def user_exists(conn, %{"user" => username}) do
     with %User{} <- Repo.get_by(User, nickname: username, local: true) do
@@ -29,7 +34,7 @@ defmodule Pleroma.Web.MongooseIM.MongooseIMController do
     else
       false ->
         conn
-        |> put_status(403)
+        |> put_status(:forbidden)
         |> json(false)
 
       _ ->