40 lines
1.1 KiB
Elixir
40 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
|