add username field, make it main log-in method

This commit is contained in:
2021-10-11 15:04:46 +02:00
parent 14aefe45ce
commit 016b0b78bd
8 changed files with 39 additions and 22 deletions
+13 -2
View File
@@ -4,6 +4,7 @@ defmodule PokemonCouture.Accounts.User do
@derive {Inspect, except: [:password]}
schema "users" do
field :username, :string
field :email, :string
field :password, :string, virtual: true
field :hashed_password, :string
@@ -32,11 +33,21 @@ defmodule PokemonCouture.Accounts.User do
"""
def registration_changeset(user, attrs, opts \\ []) do
user
|> cast(attrs, [:email, :password])
|> validate_email()
|> cast(attrs, [:username, :email, :password])
|> validate_username()
|> validate_password(opts)
end
defp validate_username(changeset) do
changeset
|> validate_required([:username])
|> validate_format(:username, ~r/^[^\s]+$/, message: "must have no spaces")
|> validate_length(:username, max: 160)
|> validate_length(:username, min: 3)
|> unsafe_validate_unique(:username, PokemonCouture.Repo)
|> unique_constraint(:username)
end
defp validate_email(changeset) do
changeset
|> validate_required([:email])