Add plug to generate Matrix error
This commit is contained in:
parent
dac1a429b9
commit
1ec18163c1
6 changed files with 47 additions and 50 deletions
|
@ -1,7 +1,8 @@
|
|||
defmodule MatrixServerWeb.AccountController do
|
||||
use MatrixServerWeb, :controller
|
||||
|
||||
import MatrixServer, only: [get_mxid: 1]
|
||||
import MatrixServer
|
||||
import MatrixServerWeb.Plug.Error
|
||||
|
||||
alias MatrixServer.Account
|
||||
alias Plug.Conn
|
||||
|
@ -9,21 +10,15 @@ defmodule MatrixServerWeb.AccountController do
|
|||
def available(conn, params) do
|
||||
localpart = Map.get(params, "username", "")
|
||||
|
||||
{status, data} =
|
||||
case Account.available?(localpart) do
|
||||
:ok ->
|
||||
{200, %{available: true}}
|
||||
case Account.available?(localpart) do
|
||||
:ok ->
|
||||
conn
|
||||
|> put_status(200)
|
||||
|> json(%{available: true})
|
||||
|
||||
{:error, :user_in_use} ->
|
||||
{400, %{errcode: "M_USER_IN_USE", error: "Desired user ID is already taken."}}
|
||||
|
||||
{:error, :invalid_username} ->
|
||||
{400, %{errocode: "M_INVALID_USERNAME", error: "Desired user ID is invalid."}}
|
||||
end
|
||||
|
||||
conn
|
||||
|> put_status(status)
|
||||
|> json(data)
|
||||
{:error, error} ->
|
||||
put_error(conn, error)
|
||||
end
|
||||
end
|
||||
|
||||
def whoami(%Conn{assigns: %{account: %Account{localpart: localpart}}} = conn, _params) do
|
||||
|
|
|
@ -2,6 +2,7 @@ defmodule MatrixServerWeb.AuthController do
|
|||
use MatrixServerWeb, :controller
|
||||
|
||||
import MatrixServer
|
||||
import MatrixServerWeb.Plug.Error
|
||||
|
||||
alias MatrixServer.{Repo, Account}
|
||||
alias Ecto.Changeset
|
||||
|
@ -38,7 +39,7 @@ defmodule MatrixServerWeb.AuthController do
|
|||
{200, data}
|
||||
|
||||
{:error, error} ->
|
||||
generate_error(error)
|
||||
put_error(conn, error)
|
||||
end
|
||||
|
||||
conn
|
||||
|
@ -48,11 +49,7 @@ defmodule MatrixServerWeb.AuthController do
|
|||
|
||||
def register(conn, %{"auth" => _}) do
|
||||
# Other login types are unsupported for now.
|
||||
data = %{errcode: "M_FORBIDDEN", error: "Login type not supported"}
|
||||
|
||||
conn
|
||||
|> put_status(400)
|
||||
|> json(data)
|
||||
put_error(conn, :forbidden)
|
||||
end
|
||||
|
||||
def register(conn, _params) do
|
||||
|
@ -80,9 +77,9 @@ defmodule MatrixServerWeb.AuthController do
|
|||
end
|
||||
|
||||
defp get_register_error(%Changeset{errors: [error | _]}), do: get_register_error(error)
|
||||
defp get_register_error({:localpart, {_, [{:constraint, :unique} | _]}}), do: "M_USER_IN_USE"
|
||||
defp get_register_error({:localpart, {_, [{:validation, _} | _]}}), do: "M_INVALID_USERNAME"
|
||||
defp get_register_error(_), do: "M_BAD_JSON"
|
||||
defp get_register_error({:localpart, {_, [{:constraint, :unique} | _]}}), do: :user_in_use
|
||||
defp get_register_error({:localpart, {_, [{:validation, _} | _]}}), do: :invalid_username
|
||||
defp get_register_error(_), do: :bad_json
|
||||
|
||||
defp register_schema do
|
||||
types = %{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue