Usher.Config (Usher v0.5.1)

View Source

Configuration management for Usher.

Handles loading and validating configuration from the application environment.

See the configuration guide for details on usage.

Summary

Functions

Returns all Usher configuration as a keyword list.

Returns the schema field type for the :custom_attributes field in the Usher.Invitation schema.

Returns the configured default expiration duration.

Returns whether the name field is required for invitations.

Returns the configured Ecto repository.

Returns schema override configuration for all schemas.

Returns the signing secret for token signing.

Returns the configured token length.

Returns the configured valid actions for invitation usage tracking.

Returns the configured valid entity types for invitation usage tracking.

Returns validation configuration for all schemas.

Types

duration_unit_pair()

@type duration_unit_pair() ::
  {:year, integer()}
  | {:month, integer()}
  | {:week, integer()}
  | {:day, integer()}
  | {:hour, integer()}
  | {:minute, integer()}
  | {:second, integer()}

schema_overrides()

@type schema_overrides() :: %{
  optional(:invitation) => %{custom_attributes_type: :map | module()}
}

t()

@type t() :: [
  repo: Ecto.Repo.t(),
  token_length: non_neg_integer(),
  default_expires_in: duration_unit_pair(),
  validations: validations()
]

validations()

@type validations() :: %{
  optional(:invitation) => %{name_required: boolean()},
  invitation_usage: %{
    valid_usage_entity_types: [atom()],
    valid_usage_actions: [atom()]
  }
}

Functions

all()

@spec all() :: t()

Returns all Usher configuration as a keyword list.

Useful for debugging or displaying current configuration.

Examples

iex> Usher.Config.all()
[
  repo: MyApp.Repo,
  token_length: 16,
  default_expires_in: {7, :day},
  validations: %{
    invitation: %{name_required: true}
    invitation_usage: %{
      valid_usage_entity_types: [:user, :company],
      valid_usage_actions: [:visited, :registered]
    }
  }
]

custom_attributes_type()

@spec custom_attributes_type() :: :map | module()

Returns the schema field type for the :custom_attributes field in the Usher.Invitation schema.

default_expires_in()

Returns the configured default expiration duration.

Accepts a Duration.unit_pair(), such as {30, :minute}. See the docs for Duration.

Defaults to 7 days if not configured.

name_required?()

@spec name_required?() :: boolean()

Returns whether the name field is required for invitations.

This is a convenience function that extracts the name_required value from the validations configuration.

repo()

Returns the configured Ecto repository.

This is required for Usher to function and must be set in your application config:

config :usher, repo: MyApp.Repo

Raises if not configured.

schema_overrides()

@spec schema_overrides() :: schema_overrides()

Returns schema override configuration for all schemas.

signing_secret!()

@spec signing_secret!() :: binary()

Returns the signing secret for token signing.

Required if you use signed invitation tokens. Raises if not configured.

token_length()

Returns the configured token length.

Defaults to 16 characters if not configured.

valid_usage_actions()

Returns the configured valid actions for invitation usage tracking.

This is required for usage tracking to function and must be set in your application config:

config :usher,
  validations: %{
    invitation_usage: %{
      valid_usage_actions: [:visited, :registered, :activated]
    }
  }

Raises if not configured.

valid_usage_entity_types()

Returns the configured valid entity types for invitation usage tracking.

This is required for usage tracking to function and must be set in your application config:

config :usher,
  validations: %{
    invitation_usage: %{
      valid_usage_entity_types: [:user, :company, :device]
    }
  }

Raises if not configured.

validations()

@spec validations() :: validations()

Returns validation configuration for all schemas.