Current section
Files
Jump to
Current section
Files
lib/session/redis.ex
defmodule ExDjango.Session.Redis do
@moduledoc """
Stores the session in redis.
"""
@behaviour Plug.Session.Store
alias ExDjango.Utils.Redis
def init(opts) do
%{key_prefix: Keyword.get(opts, :key_prefix, Redis.default_session_key_prefix())}
end
def get(_conn, sid, opts) do
{sid, Redis.get_session(opts.key_prefix, sid)}
end
def put(conn, nil, data, opts) do
sid = :crypto.strong_rand_bytes(96) |> Base.encode64
put(conn, sid, data, opts)
end
def put(_conn, sid, data, opts) do
Redis.put_session(opts.key_prefix, sid, data)
end
def delete(_conn, sid, opts) do
Redis.delete_session(opts.key_prefix, sid)
end
end