Packages
pow
1.0.13
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
@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 extensions that has a module matching the provided module list.
It'll concat the extension atom with the module list, and return a list of
all modules that is available in the project.
"""
@spec discover_modules(Config.t(), [any()]) :: [atom()]
def discover_modules(config, module_list) do
config
|> extensions()
|> Enum.map(&Module.concat([&1] ++ module_list))
|> Enum.filter(&Code.ensure_compiled?/1)
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