Packages
pow
1.0.29
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/extensions/persistent_session/store/persistent_session_cache.ex
defmodule PowPersistentSession.Store.PersistentSessionCache do
@moduledoc false
use Pow.Store.Base,
ttl: :timer.hours(24) * 30,
namespace: "persistent_session"
alias Pow.{Operations, Store.Base}
@impl true
@spec put(Base.config(), binary(), {map(), list()}) :: :ok
def put(config, id, {user, metadata}) do
Base.put(config, backend_config(config), {id, {user, metadata}})
end
@impl true
@spec get(Base.config(), binary()) :: {map(), list()} | nil | :not_found
def get(config, id) do
config
|> Base.get(backend_config(config), id)
|> convert_old_value()
|> reload(config)
end
# TODO: Remove by 1.1.0
defp convert_old_value(:not_found), do: :not_found
defp convert_old_value({user, metadata}), do: {user, metadata}
defp convert_old_value(clauses) when is_list(clauses), do: {clauses, []}
defp reload(:not_found, _config), do: :not_found
defp reload(value, config) do
case Keyword.has_key?(config, :pow_config) do
true ->
do_reload(value, config)
# TODO: Remove by 1.1.0
false ->
IO.warn("#{inspect __MODULE__}.get/2 call without `:pow_config` in second argument is deprecated, find the migration step in the changelog.")
value
end
end
# TODO: Remove by 1.1.0
defp do_reload({clauses, metadata}, config) when is_list(clauses) do
pow_config = fetch_pow_config!(config)
case Operations.get_by(clauses, pow_config) do
nil -> nil
user -> {user, metadata}
end
end
defp do_reload({user, metadata}, config) do
pow_config = fetch_pow_config!(config)
case Operations.reload(user, pow_config) do
nil -> nil
user -> {user, metadata}
end
end
defp fetch_pow_config!(config), do: Keyword.get(config, :pow_config) || raise "No `:pow_config` value found in the store config."
end