defmodule AshAuthentication.Strategy.Oidc.Transformer do
@moduledoc """
DSL transformer for oidc strategies.
Adds a nonce generator to the strategy if `nonce` is set to `true`.
Delegates to the default OAuth2 transformer.
"""
alias AshAuthentication.Strategy.{OAuth2, Oidc.NonceGenerator}
@doc false
@spec transform(OAuth2.t(), map) :: {:ok, OAuth2.t() | map} | {:error, Exception.t()}
def transform(strategy, dsl_state) when strategy.nonce == true do
strategy
|> Map.put(:nonce, {NonceGenerator, []})
|> OAuth2.transform(dsl_state)
end
def transform(strategy, dsl_state), do: OAuth2.transform(strategy, dsl_state)
end