From 2137cf495935bbe61941639864058e2d9845de27 Mon Sep 17 00:00:00 2001 From: HaimKortovich Date: Mon, 4 May 2026 16:06:19 -0500 Subject: [PATCH] make provider config simpler --- lib/policy_service/application.ex | 8 +++---- .../plugs/authentication_plug.ex | 23 ++++--------------- lib/policy_service_web/router.ex | 9 +------- 3 files changed, 9 insertions(+), 31 deletions(-) diff --git a/lib/policy_service/application.ex b/lib/policy_service/application.ex index fd1388c..33d1708 100644 --- a/lib/policy_service/application.ex +++ b/lib/policy_service/application.ex @@ -5,12 +5,10 @@ defmodule PolicyService.Application do use Application - defp get_zitadel_config(key) do - Application.get_env(:policy_service, :zitadel)[key] - end - @impl true def start(_type, _args) do + zitadel_config = Application.get_env(:policy_service, :zitadel, []) + children = [ PolicyService.CommandedApp, PolicyService.Handlers.QuoteRequestHandler, @@ -25,7 +23,7 @@ defmodule PolicyService.Application do {Phoenix.PubSub, name: PolicyService.PubSub, pool_size: 1}, {Oidcc.ProviderConfiguration.Worker, %{ - issuer: get_zitadel_config(:issuer), + issuer: Keyword.get(zitadel_config, :issuer), name: PolicyService.ZitadelProvider }}, PolicyServiceWeb.Endpoint diff --git a/lib/policy_service_web/plugs/authentication_plug.ex b/lib/policy_service_web/plugs/authentication_plug.ex index 60dae65..5e98dee 100644 --- a/lib/policy_service_web/plugs/authentication_plug.ex +++ b/lib/policy_service_web/plugs/authentication_plug.ex @@ -14,33 +14,20 @@ defmodule PolicyServiceWeb.Plugs.AuthenticationPlug do ## Options - :provider - The OIDCC provider configuration worker name (required) - - :client_id - OAuth2 client ID (required) - can be a string or {module, function, args} tuple - - :client_secret - OAuth2 client secret (required) - can be a string or {module, function, args} tuple - - :required_scopes - List of required scopes (optional) """ def init(opts) do provider = Keyword.fetch!(opts, :provider) - client_id = Keyword.fetch!(opts, :client_id) - client_secret = Keyword.fetch!(opts, :client_secret) - required_scopes = Keyword.get(opts, :required_scopes, []) + + zitadel_config = Application.get_env(:policy_service, :zitadel, []) %{ provider: provider, - client_id: resolve_config(client_id), - client_secret: resolve_config(client_secret), - required_scopes: required_scopes + client_id: Keyword.get(zitadel_config, :client_id), + client_secret: Keyword.get(zitadel_config, :client_secret), + required_scopes: Keyword.get(zitadel_config, :required_scopes, []) } end - defp resolve_config({module, function, args}) - when is_atom(module) and is_atom(function) and is_list(args) do - apply(module, function, args) - end - - defp resolve_config(value) when is_binary(value), do: value - defp resolve_config(value) when is_function(value, 0), do: value.() - defp resolve_config(value), do: value - @doc """ Authenticates the request by validating the JWT token. diff --git a/lib/policy_service_web/router.ex b/lib/policy_service_web/router.ex index 3f481b8..4120746 100644 --- a/lib/policy_service_web/router.ex +++ b/lib/policy_service_web/router.ex @@ -10,10 +10,7 @@ defmodule PolicyServiceWeb.Router do pipeline :authenticated do plug PolicyServiceWeb.Plugs.AuthenticationPlug, - provider: PolicyService.ZitadelProvider, - client_id: {__MODULE__, :get_zitadel_config, [:client_id]}, - client_secret: {__MODULE__, :get_zitadel_config, [:client_secret]}, - required_scopes: {__MODULE__, :get_zitadel_config, [:required_scopes]} + provider: PolicyService.ZitadelProvider end pipeline :authorized do @@ -41,8 +38,4 @@ defmodule PolicyServiceWeb.Router do scope "/swaggerui" do get "/", OpenApiSpex.Plug.SwaggerUI, path: "/api/openapi" end - - def get_zitadel_config(key) do - Application.get_env(:policy_service, :zitadel)[key] - end end