forked from AkkomaGang/akkoma
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
This commit is contained in:
commit
89ab673d00
3 changed files with 38 additions and 7 deletions
|
@ -212,13 +212,31 @@ def token_exchange(
|
|||
{: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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -852,6 +852,7 @@ test "rejects token exchange for user with password_reset_pending set to true" d
|
|||
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
|
||||
|
||||
|
|
Loading…
Reference in a new issue