Packages
pow
1.0.9
1.0.39
1.0.38
1.0.37
1.0.36
1.0.35
1.0.34
1.0.33
1.0.32
1.0.31
1.0.30
1.0.29
1.0.28
1.0.27
1.0.26
1.0.25
1.0.24
1.0.23
1.0.22
1.0.21
1.0.20
1.0.19
1.0.18
1.0.17
1.0.16
1.0.15
1.0.14
1.0.13
1.0.12
1.0.11
1.0.10
1.0.9
1.0.8
1.0.7
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
1.0.0-rc.4
1.0.0-rc.3
1.0.0-rc.2
1.0.0-rc.1
1.0.0-rc.0
0.1.0-rc.1
0.1.0-alpha.8
0.1.0-alpha.7
retired
0.1.0-alpha.6
0.1.0-alpha.5
0.1.0-alpha.4
0.1.0-alpha.3
0.1.0-alpha.2
0.1.0-alpha.1
0.1.0-alpha
Robust user authentication solution
Security advisory:
This version has known vulnerabilities.
View advisories
Current section
Files
Jump to
Current section
Files
lib/pow/config.ex
defmodule Pow.Config do
@moduledoc """
Methods to parse and modify configurations.
"""
@type t :: Keyword.t()
defmodule ConfigError do
defexception [:message]
end
@doc """
Gets the key value from the configuration.
If not found, it'll fall back to environment config, and lastly to the
default value which is `nil` if not specified.
"""
@spec get(t(), atom(), any()) :: any()
def get(config, key, default \\ nil) do
case Keyword.get(config, key, :not_found) do
:not_found -> get_env_config(config, key, default)
value -> value
end
end
defp get_env_config(config, key, default, env_key \\ :pow) do
config
|> Keyword.get(:otp_app)
|> case do
nil -> Application.get_all_env(env_key)
otp_app -> Application.get_env(otp_app, env_key, [])
end
|> Keyword.get(key, default)
end
@doc """
Puts a new key value to the configuration.
"""
@spec put(t(), atom(), any()) :: t()
def put(config, key, value) do
Keyword.put(config, key, value)
end
@doc """
Merges two configurations.
"""
@spec merge(t(), t()) :: t()
def merge(l_config, r_config) do
Keyword.merge(l_config, r_config)
end
@doc """
Raise a ConfigError exception.
"""
@spec raise_error(binary()) :: no_return
def raise_error(message) do
raise ConfigError, message: message
end
@doc """
Retrieves the repo module from the config, or raises an exception.
"""
@spec repo!(t()) :: atom() | no_return()
def repo!(config) do
get(config, :repo) || raise_error("No `:repo` configuration option found.")
end
@doc """
Retrieves the user schema module from the config, or raises an exception.
"""
@spec user!(t()) :: atom() | no_return()
def user!(config) do
get(config, :user) || raise_error("No `:user` configuration option found.")
end
end