96 lines
2.3 KiB
Elixir
96 lines
2.3 KiB
Elixir
defmodule Mv.Constants do
|
|
@moduledoc """
|
|
Module for defining constants and atoms.
|
|
"""
|
|
|
|
@member_fields [
|
|
:first_name,
|
|
:last_name,
|
|
:email,
|
|
:join_date,
|
|
:exit_date,
|
|
:notes,
|
|
:city,
|
|
:street,
|
|
:house_number,
|
|
:postal_code,
|
|
:membership_fee_start_date
|
|
]
|
|
|
|
@custom_field_prefix "custom_field_"
|
|
|
|
@boolean_filter_prefix "bf_"
|
|
|
|
@max_boolean_filters 50
|
|
|
|
@max_uuid_length 36
|
|
|
|
@email_validator_checks [:html_input, :pow]
|
|
|
|
def member_fields, do: @member_fields
|
|
|
|
@doc """
|
|
Returns the prefix used for custom field keys in field visibility maps.
|
|
|
|
## Examples
|
|
|
|
iex> Mv.Constants.custom_field_prefix()
|
|
"custom_field_"
|
|
"""
|
|
def custom_field_prefix, do: @custom_field_prefix
|
|
|
|
@doc """
|
|
Returns the prefix used for boolean custom field filter URL parameters.
|
|
|
|
## Examples
|
|
|
|
iex> Mv.Constants.boolean_filter_prefix()
|
|
"bf_"
|
|
"""
|
|
def boolean_filter_prefix, do: @boolean_filter_prefix
|
|
|
|
@doc """
|
|
Returns the maximum number of boolean custom field filters allowed per request.
|
|
|
|
This limit prevents DoS attacks by restricting the number of filter parameters
|
|
that can be processed in a single request.
|
|
|
|
## Examples
|
|
|
|
iex> Mv.Constants.max_boolean_filters()
|
|
50
|
|
"""
|
|
def max_boolean_filters, do: @max_boolean_filters
|
|
|
|
@doc """
|
|
Returns the maximum length of a UUID string (36 characters including hyphens).
|
|
|
|
UUIDs in standard format (e.g., "550e8400-e29b-41d4-a716-446655440000") are
|
|
exactly 36 characters long. This constant is used for input validation.
|
|
|
|
## Examples
|
|
|
|
iex> Mv.Constants.max_uuid_length()
|
|
36
|
|
"""
|
|
def max_uuid_length, do: @max_uuid_length
|
|
|
|
@doc """
|
|
Returns the email validator checks used for EctoCommons.EmailValidator.
|
|
|
|
We use both `:html_input` and `:pow` checks:
|
|
- `:html_input` - Pragmatic validation matching browser `<input type="email">` behavior
|
|
- `:pow` - Stricter validation following email spec, supports internationalization (Unicode)
|
|
|
|
Using both ensures:
|
|
- Compatibility with common email providers (html_input)
|
|
- Compliance with email standards (pow)
|
|
- Support for international email addresses (pow)
|
|
|
|
## Examples
|
|
|
|
iex> Mv.Constants.email_validator_checks()
|
|
[:html_input, :pow]
|
|
"""
|
|
def email_validator_checks, do: @email_validator_checks
|
|
end
|