diff --git a/pento/lib/pento/accounts/user.ex b/pento/lib/pento/accounts/user.ex index 3b0bd4a..1d87802 100644 --- a/pento/lib/pento/accounts/user.ex +++ b/pento/lib/pento/accounts/user.ex @@ -3,6 +3,7 @@ defmodule Pento.Accounts.User do import Ecto.Changeset schema "users" do + field :username, :string field :email, :string field :password, :string, virtual: true, redact: true field :hashed_password, :string, redact: true @@ -37,9 +38,18 @@ defmodule Pento.Accounts.User do """ def registration_changeset(user, attrs, opts \\ []) do user - |> cast(attrs, [:email, :password]) + |> cast(attrs, [:email, :password, :username]) |> validate_email(opts) |> validate_password(opts) + |> validate_username() + end + + defp validate_username(changeset) do + changeset + |> validate_required([:username]) + |> validate_length(:username, min: 4, max: 20) + |> unsafe_validate_unique(:username, Pento.Repo) + |> unique_constraint(:username) end defp validate_email(changeset, opts) do diff --git a/pento/lib/pento_web/components/layouts/root.html.heex b/pento/lib/pento_web/components/layouts/root.html.heex index dc3be84..ddc5b26 100644 --- a/pento/lib/pento_web/components/layouts/root.html.heex +++ b/pento/lib/pento_web/components/layouts/root.html.heex @@ -15,7 +15,7 @@