Skip to content

Commit eaf62bb

Browse files
committed
Refactor Schema.user_id_field/1
1 parent a3ec42b commit eaf62bb

File tree

3 files changed

+16
-14
lines changed

3 files changed

+16
-14
lines changed

lib/pow/ecto/context.ex

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91,10 +91,10 @@ defmodule Pow.Ecto.Context do
9191
"""
9292
@spec authenticate(Config.t(), map()) :: user() | nil
9393
def authenticate(config, params) do
94-
user_mod = user_schema_mod(config)
95-
user_id_field = Schema.user_id_field(user_mod)
96-
login_value = params[Atom.to_string(user_id_field)]
97-
password = params["password"]
94+
user_mod = user_schema_mod(config)
95+
user_id_field = user_mod.pow_user_id_field()
96+
login_value = params[Atom.to_string(user_id_field)]
97+
password = params["password"]
9898

9999
config
100100
|> get_by([{user_id_field, login_value}])
@@ -161,7 +161,7 @@ defmodule Pow.Ecto.Context do
161161
end
162162

163163
defp normalize_user_id_field_value(user_mod, clauses) do
164-
user_id_field = Schema.user_id_field(user_mod)
164+
user_id_field = user_mod.pow_user_id_field()
165165

166166
Enum.map clauses, fn
167167
{^user_id_field, value} -> {user_id_field, Schema.normalize_user_id_field_value(value)}

lib/pow/ecto/schema.ex

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -137,14 +137,13 @@ defmodule Pow.Ecto.Schema do
137137
end
138138
end
139139

140-
@spec user_id_field :: atom()
141-
def user_id_field, do: :email
142-
143-
@spec user_id_field(Config.t() | Changeset.t() | map() | atom()) :: atom()
144-
def user_id_field(config) when is_list(config), do: Config.get(config, :user_id_field, user_id_field())
145-
def user_id_field(%Changeset{data: data}), do: user_id_field(data.__struct__)
146-
def user_id_field(map) when is_map(map), do: user_id_field(map.__struct__)
147-
def user_id_field(module), do: module.pow_user_id_field()
140+
@doc """
141+
Get user id field key from configuration.
142+
143+
Defaults to `:email`.
144+
"""
145+
@spec user_id_field(Config.t()) :: atom()
146+
def user_id_field(config \\ []), do: Config.get(config, :user_id_field, :email)
148147

149148
@doc """
150149
Normalizes the user id field.

lib/pow/ecto/schema/changeset.ex

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,10 @@ defmodule Pow.Ecto.Schema.Changeset do
3333
"""
3434
@spec user_id_field_changeset(Ecto.Schema.t() | Changeset.t(), map(), Config.t()) :: Changeset.t()
3535
def user_id_field_changeset(user_or_changeset, params, _config) do
36-
user_id_field = Schema.user_id_field(user_or_changeset)
36+
user_id_field = case user_or_changeset do
37+
%Changeset{data: %struct{}} -> struct.pow_user_id_field()
38+
%struct{} -> struct.pow_user_id_field()
39+
end
3740

3841
user_or_changeset
3942
|> Changeset.cast(params, [user_id_field])

0 commit comments

Comments
 (0)