Current section
Files
Jump to
Current section
Files
lib/noa_web/controllers/idrp/idrp_controller.ex
defmodule NoaWeb.IdrpController do
@moduledoc false
use NoaWeb, :controller
action_fallback NoaWeb.FallbackController
import NoaWeb.Router.Helpers, only: [consent_path: 3]
def request(conn, _attrs), do: conn
def callback(%{assigns: %{ueberauth_failure: failure}} = conn, _attrs) do
desc = "idrpc-1 #{inspect failure}"
conn
|> delete_session("x-noa-az-state-auth")
|> put_status(401)
|> json(%{error: "signin_failed", error_description: desc})
|> halt()
end
def callback(%{assigns: %{ueberauth_auth: auth}} = conn, _attrs) do
provider = get_session(conn, "x-noa-authz-req-data") |> get_in([:provider])
consent_uri = consent_path(NoaWeb.Endpoint, :show_consent, provider.id)
consent_state = get_session(conn, "x-noa-az-state-consent")
conn
|> delete_session("x-noa-az-state-auth")
|> put_session("x-noa-az-ro", auth)
|> put_session("x-noa-az-stage", "consent")
|> redirect(to: consent_uri <> "?state=#{consent_state}")
end
def callback(conn, _attrs) do
desc = "server_error"
conn
|> delete_session("x-noa-az-state-auth")
|> put_status(500)
|> json(%{error: "signin_failed", error_description: desc})
|> halt()
end
end