Current section

Files

Jump to
phoenix_session_process lib phoenix session_process config.ex
Raw

lib/phoenix/session_process/config.ex

defmodule Phoenix.SessionProcess.Config do
@moduledoc """
Configuration for Phoenix.SessionProcess.
"""
@default_session_process __MODULE__.DefaultSessionProcess
@default_max_sessions 10_000
# 1 hour in milliseconds
@default_session_ttl 3_600_000
# sessions per minute
@default_rate_limit 100
@doc """
Gets the configured session process module.
"""
@spec session_process() :: module()
def session_process() do
Application.get_env(:phoenix_session_process, :session_process, @default_session_process)
end
@doc """
Gets the maximum number of allowed concurrent sessions.
"""
@spec max_sessions() :: integer()
def max_sessions() do
Application.get_env(:phoenix_session_process, :max_sessions, @default_max_sessions)
end
@doc """
Gets the session TTL in milliseconds.
"""
@spec session_ttl() :: integer()
def session_ttl() do
Application.get_env(:phoenix_session_process, :session_ttl, @default_session_ttl)
end
@doc """
Gets the rate limit for session creation (sessions per minute).
"""
@spec rate_limit() :: integer()
def rate_limit() do
Application.get_env(:phoenix_session_process, :rate_limit, @default_rate_limit)
end
@doc """
Validates a session ID format.
"""
@spec valid_session_id?(binary()) :: boolean()
def valid_session_id?(session_id) do
is_binary(session_id) and
byte_size(session_id) > 0 and
byte_size(session_id) <= 64 and
String.match?(session_id, ~r/^[A-Za-z0-9_-]+$/)
end
end