comfycamp/lib/comfycamp_web/controllers/oidc_app_controller.ex

81 lines
2.1 KiB
Elixir
Raw Normal View History

2024-09-05 02:27:33 +05:00
defmodule ComfycampWeb.OIDCAppController do
use ComfycampWeb, :controller
alias Comfycamp.SSO
alias Comfycamp.SSO.OIDCApp
2024-09-06 13:12:30 +05:00
alias Comfycamp.Rand
2024-09-05 02:27:33 +05:00
def index(conn, _params) do
oidc_apps = SSO.list_oidc_apps()
conn
|> put_layout(html: :admin)
|> render(:index, oidc_apps: oidc_apps)
end
def new(conn, _params) do
2024-09-06 13:12:30 +05:00
changeset = SSO.change_oidc_app(%OIDCApp{
client_id: Rand.get_random_string(20),
client_secret: Rand.get_random_string(32),
})
2024-09-05 02:27:33 +05:00
conn
|> put_layout(html: :admin)
|> render(:new, changeset: changeset)
end
def create(conn, %{"oidc_app" => oidc_app_params}) do
case SSO.create_oidc_app(oidc_app_params) do
{:ok, oidc_app} ->
conn
|> put_flash(:info, "Oidc app created successfully.")
|> redirect(to: ~p"/admin/oidc_apps/#{oidc_app}")
{:error, %Ecto.Changeset{} = changeset} ->
conn
|> put_layout(html: :admin)
|> render(:new, changeset: changeset)
end
end
2024-09-06 13:12:30 +05:00
def show(conn, %{"id" => client_id}) do
oidc_app = SSO.get_oidc_app!(client_id)
2024-09-05 02:27:33 +05:00
conn
|> put_layout(html: :admin)
|> render(:show, oidc_app: oidc_app)
end
2024-09-06 13:12:30 +05:00
def edit(conn, %{"id" => client_id}) do
oidc_app = SSO.get_oidc_app!(client_id)
2024-09-05 02:27:33 +05:00
changeset = SSO.change_oidc_app(oidc_app)
conn
|> put_layout(html: :admin)
|> render(:edit, oidc_app: oidc_app, changeset: changeset)
end
2024-09-06 13:12:30 +05:00
def update(conn, %{"id" => client_id, "oidc_app" => oidc_app_params}) do
oidc_app = SSO.get_oidc_app!(client_id)
2024-09-05 02:27:33 +05:00
case SSO.update_oidc_app(oidc_app, oidc_app_params) do
{:ok, oidc_app} ->
conn
|> put_flash(:info, "Oidc app updated successfully.")
|> redirect(to: ~p"/admin/oidc_apps/#{oidc_app}")
{:error, %Ecto.Changeset{} = changeset} ->
render(conn, :edit, oidc_app: oidc_app, changeset: changeset)
end
end
2024-09-06 13:12:30 +05:00
def delete(conn, %{"id" => client_id}) do
oidc_app = SSO.get_oidc_app!(client_id)
2024-09-05 02:27:33 +05:00
{:ok, _oidc_app} = SSO.delete_oidc_app(oidc_app)
conn
|> put_flash(:info, "Oidc app deleted successfully.")
|> redirect(to: ~p"/admin/oidc_apps")
end
end