Packages
pow
1.0.21
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/extension/config.ex
defmodule Pow.Extension.Config do
@moduledoc """
Configuration helpers for extensions.
"""
alias Pow.{Config, Extension.Base}
@doc """
Fetches the `:extensions` key from the configuration.
"""
@spec extensions(Config.t()) :: [atom()]
def extensions(config) do
Config.get(config, :extensions, [])
end
@doc """
Finds all existing extension modules that matches the extensions and module
list.
This will iterate through all extensions appending the module list to the
extension module and return a list of all modules that exists in the project.
"""
@spec extension_modules([atom()], [any()]) :: [atom()]
def extension_modules(extensions, module_list) do
extensions
|> Enum.filter(&Base.has?(&1, module_list))
|> Enum.map(&Module.concat([&1] ++ module_list))
end
# TODO: Remove by 1.1.0
@deprecated "Use `extension_modules/2` instead"
def discover_modules(config, module_list) do
config
|> extensions()
|> extension_modules(module_list)
end
# TODO: Remove by 1.1.0
@doc """
Returns a binary of the extension atom.
This is usually used to create extension namespaces for methods to be used
in shared modules.
"""
@deprecated "Create the namespace directly in your module"
@spec underscore_extension(atom()) :: binary()
def underscore_extension(extension) do
extension
|> Module.split()
|> List.first()
|> Macro.underscore()
end
end