Parcourir la source

Merge branch 'feature/send-identifier-on-oauth-error' into 'develop'

Send an identifier alongside with error message in OAuthController

See merge request pleroma/pleroma!1765
object-id-column
kaniini il y a 4 ans
Parent
révision
89ab673d00
3 fichiers modifiés avec 38 ajouts et 7 suppressions
  1. +21
    -3
      lib/pleroma/web/oauth/oauth_controller.ex
  2. +16
    -4
      lib/pleroma/web/translation_helpers.ex
  3. +1
    -0
      test/web/oauth/oauth_controller_test.exs

+ 21
- 3
lib/pleroma/web/oauth/oauth_controller.ex Voir le fichier

@@ -212,13 +212,31 @@ defmodule Pleroma.Web.OAuth.OAuthController do
{:auth_active, false} ->
# Per https://github.com/tootsuite/mastodon/blob/
# 51e154f5e87968d6bb115e053689767ab33e80cd/app/controllers/api/base_controller.rb#L76
render_error(conn, :forbidden, "Your login is missing a confirmed e-mail address")
render_error(
conn,
:forbidden,
"Your login is missing a confirmed e-mail address",
%{},
"missing_confirmed_email"
)

{:user_active, false} ->
render_error(conn, :forbidden, "Your account is currently disabled")
render_error(
conn,
:forbidden,
"Your account is currently disabled",
%{},
"account_is_disabled"
)

{:password_reset_pending, true} ->
render_error(conn, :forbidden, "Password reset is required")
render_error(
conn,
:forbidden,
"Password reset is required",
%{},
"password_reset_required"
)

_error ->
render_invalid_credentials_error(conn)


+ 16
- 4
lib/pleroma/web/translation_helpers.ex Voir le fichier

@@ -3,15 +3,27 @@
# SPDX-License-Identifier: AGPL-3.0-only

defmodule Pleroma.Web.TranslationHelpers do
defmacro render_error(conn, status, msgid, bindings \\ Macro.escape(%{})) do
defmacro render_error(
conn,
status,
msgid,
bindings \\ Macro.escape(%{}),
identifier \\ Macro.escape("")
) do
quote do
require Pleroma.Web.Gettext

error_map =
%{
error: Pleroma.Web.Gettext.dgettext("errors", unquote(msgid), unquote(bindings)),
identifier: unquote(identifier)
}
|> Enum.reject(fn {_k, v} -> v == "" end)
|> Map.new()

unquote(conn)
|> Plug.Conn.put_status(unquote(status))
|> Phoenix.Controller.json(%{
error: Pleroma.Web.Gettext.dgettext("errors", unquote(msgid), unquote(bindings))
})
|> Phoenix.Controller.json(error_map)
end
end
end

+ 1
- 0
test/web/oauth/oauth_controller_test.exs Voir le fichier

@@ -852,6 +852,7 @@ defmodule Pleroma.Web.OAuth.OAuthControllerTest do
assert resp = json_response(conn, 403)

assert resp["error"] == "Password reset is required"
assert resp["identifier"] == "password_reset_required"
refute Map.has_key?(resp, "access_token")
end



Chargement…
Annuler
Enregistrer