Current section
Files
Jump to
Current section
Files
lib/mapper.ex
defmodule KeenAuth.Mapper do
alias KeenAuth.User
alias KeenAuth.Strategy
@default_mapper KeenAuth.Mappers.Default
@callback map(provider :: atom(), user :: map()) :: User.t()
defmacro __using__(_params \\ nil) do
quote do
@behaviour unquote(__MODULE__)
def map(provider, user), do: unquote(__MODULE__).map(provider, user)
defoverridable unquote(__MODULE__)
end
end
def current_mapper(conn, provider) do
KeenAuth.Plug.fetch_config(conn)
|> get_mapper(provider)
end
def get_mapper(config, provider) do
Strategy.get_strategy(config, provider)[:mapper] || @default_mapper
end
end