Packages
pow
1.0.3
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/plug/base.ex
defmodule PowPersistentSession.Plug.Base do
@moduledoc """
Base module for setting up persistent session plugs.
See `PowPersistentSession.Plug.Cookie` for an implementation example.
## Configuration options
* `:persistent_session_store` - the persistent session store. This value
defaults to `{PersistentSessionCache, backend: EtsCache}`. The `EtsCache`
backend store can be changed with the `:cache_store_backend` option.
* `:cache_store_backend` - the backend cache store. This value defaults to
`EtsCache`.
"""
alias Plug.Conn
alias Pow.{Config, Plug, Store.Backend.EtsCache}
alias PowPersistentSession.Store.PersistentSessionCache
@callback authenticate(Conn.t(), Config.t()) :: Conn.t()
@callback create(Conn.t(), map(), Config.t()) :: Conn.t()
@doc false
defmacro __using__(_opts) do
quote do
@behaviour unquote(__MODULE__)
import unquote(__MODULE__)
@spec init(Config.t()) :: Config.t()
def init(config), do: config
@spec call(Conn.t(), Config.t()) :: Conn.t()
def call(conn, config) do
config =
conn
|> Plug.fetch_config()
|> Config.merge(config)
conn
|> Conn.put_private(:pow_persistent_session, {__MODULE__, config})
|> authenticate(config)
end
end
end
@spec store(Config.t()) :: {module(), Config.t()}
def store(config) do
case Config.get(config, :persistent_session_store, default_store(config)) do
{store, store_config} -> {store, store_config}
store -> {store, []}
end
end
defp default_store(config) do
backend = Config.get(config, :cache_store_backend, EtsCache)
{PersistentSessionCache, [backend: backend]}
end
end