comfycamp/lib/comfycamp_web/controllers/oidc_uri_controller.ex

39 lines
1.1 KiB
Elixir

defmodule ComfycampWeb.OIDCRedirectURIController do
use ComfycampWeb, :controller
alias Comfycamp.SSO
alias Comfycamp.SSO.OIDCRedirectURI
def new(conn, %{"client_id" => client_id}) do
changeset = SSO.change_oidc_redirect_uri(%OIDCRedirectURI{})
oidc_app = SSO.get_oidc_app!(client_id)
conn
|> put_layout(html: :admin)
|> render(:new, changeset: changeset, oidc_app: oidc_app)
end
def create(conn, %{"client_id" => client_id, "oidc_redirect_uri" => uri_params}) do
oidc_app = SSO.get_oidc_app!(client_id)
uri_params = Map.put(uri_params, "oidc_app_id", client_id)
case SSO.create_oidc_redirect_uri(uri_params) do
{:ok, _uri} ->
conn
|> redirect(to: ~p"/admin/oidc_apps/#{client_id}")
{:error, %Ecto.Changeset{} = changeset} ->
conn
|> put_layout(html: :admin)
|> render(:new, changeset: changeset, oidc_app: oidc_app)
end
end
def delete(conn, %{"client_id" => client_id, "id" => uri_id}) do
uri = SSO.get_oidc_redirect_uri!(uri_id)
{:ok, _uri} = SSO.delete_oidc_redirect_uri(uri)
conn
|> redirect(to: ~p"/admin/oidc_apps/#{client_id}")
end
end