Packages
pow
1.0.12
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/store/base.ex
defmodule Pow.Store.Base do
@moduledoc """
Used to set up API for key-value cache store.
## Usage
defmodule MyApp.CredentialsStore do
use Pow.Store.Base,
ttl: :timer.minutes(30),
namespace: "credentials"
end
"""
alias Pow.{Config, Store.Backend.EtsCache}
@callback put(Config.t(), binary(), any()) :: :ok
@callback delete(Config.t(), binary()) :: :ok
@callback get(Config.t(), binary()) :: any() | :not_found
@callback keys(Config.t()) :: [any()]
@doc false
defmacro __using__(defaults) do
quote do
@behaviour unquote(__MODULE__)
@spec put(Config.t(), binary(), any()) :: :ok
def put(config, key, value),
do: unquote(__MODULE__).put(config, backend_config(config), key, value)
@spec delete(Config.t(), binary()) :: :ok
def delete(config, key),
do: unquote(__MODULE__).delete(config, backend_config(config), key)
@spec get(Config.t(), binary()) :: any() | :not_found
def get(config, key),
do: unquote(__MODULE__).get(config, backend_config(config), key)
@spec keys(Config.t()) :: [any()]
def keys(config),
do: unquote(__MODULE__).keys(config, backend_config(config))
defp backend_config(config) do
[
ttl: Config.get(config, :ttl, unquote(defaults[:ttl])),
namespace: Config.get(config, :namespace, unquote(defaults[:namespace]))
]
end
defoverridable unquote(__MODULE__)
end
end
@doc false
@spec put(Config.t(), Config.t(), binary(), any()) :: :ok
def put(config, backend_config, key, value) do
store(config).put(backend_config, key, value)
end
@doc false
@spec delete(Config.t(), Config.t(), binary()) :: :ok
def delete(config, backend_config, key) do
store(config).delete(backend_config, key)
end
@doc false
@spec get(Config.t(), Config.t(), binary()) :: any() | :not_found
def get(config, backend_config, key) do
store(config).get(backend_config, key)
end
@doc false
@spec keys(Config.t(), Config.t()) :: [any()]
def keys(config, backend_config) do
store(config).keys(backend_config)
end
defp store(config) do
Config.get(config, :backend, EtsCache)
end
end