architex/lib/matrix_server_web/api/login.ex

45 lines
1.1 KiB
Elixir
Raw Normal View History

2021-06-27 15:28:28 +00:00
# https://gist.github.com/char0n/6fca76e886a2cfbd3aaa05526f287728
defmodule MatrixServerWeb.API.Login do
use Ecto.Schema
import Ecto.Changeset
2021-07-10 21:16:00 +00:00
# TODO: Maybe use inline embedded schema here
# https://hexdocs.pm/ecto/Ecto.Schema.html#embeds_one/3
2021-06-27 15:28:28 +00:00
defmodule MatrixServerWeb.API.Login.Identifier do
use Ecto.Schema
import Ecto.Changeset
@primary_key false
embedded_schema do
field :type, :string
field :user, :string
end
2021-07-10 21:16:00 +00:00
def changeset(identifier, params) do
2021-06-27 15:28:28 +00:00
identifier
2021-07-10 21:16:00 +00:00
|> cast(params, [:type, :user])
2021-06-27 15:28:28 +00:00
|> validate_required([:type, :user])
end
end
alias MatrixServerWeb.API.Login.Identifier
@primary_key false
embedded_schema do
field :type, :string
field :password, :string
field :device_id, :string
field :initial_device_display_name, :string
embeds_one :identifier, Identifier
end
2021-07-10 21:16:00 +00:00
def changeset(params) do
2021-06-27 15:28:28 +00:00
%__MODULE__{}
2021-07-10 21:16:00 +00:00
|> cast(params, [:type, :password, :device_id, :initial_device_display_name])
2021-06-27 15:28:28 +00:00
|> cast_embed(:identifier, with: &Identifier.changeset/2, required: true)
|> validate_required([:type, :password])
end
end