berrypod/lib/simpleshop_theme/accounts/scope.ex

34 lines
1.0 KiB
Elixir
Raw Normal View History

2025-12-30 12:26:46 +00:00
defmodule SimpleshopTheme.Accounts.Scope do
@moduledoc """
Defines the scope of the caller to be used throughout the app.
The `SimpleshopTheme.Accounts.Scope` allows public interfaces to receive
information about the caller, such as if the call is initiated from an
end-user, and if so, which user. Additionally, such a scope can carry fields
such as "super user" or other privileges for use as authorization, or to
ensure specific code paths can only be access for a given scope.
It is useful for logging as well as for scoping pubsub subscriptions and
broadcasts when a caller subscribes to an interface or performs a particular
action.
Feel free to extend the fields on this struct to fit the needs of
growing application requirements.
"""
alias SimpleshopTheme.Accounts.User
defstruct user: nil
@doc """
Creates a scope for the given user.
Returns nil if no user is given.
"""
def for_user(%User{} = user) do
%__MODULE__{user: user}
end
def for_user(nil), do: nil
end