diff --git a/lib/livebook/teams/requests.ex b/lib/livebook/teams/requests.ex index f28a1e7ae..c9121c2c8 100644 --- a/lib/livebook/teams/requests.ex +++ b/lib/livebook/teams/requests.ex @@ -237,15 +237,6 @@ defmodule Livebook.Teams.Requests do get("/api/v1/org/identity", %{access_token: access_token}, team) end - @doc """ - Send a request to Livebook Team API to revoke session from given access token. - """ - @spec logout_identity_provider(Team.t(), String.t()) :: - {:ok, String.t()} | {:error, map()} | {:transport_error, String.t()} - def logout_identity_provider(team, access_token) do - post("/api/v1/org/identity/revoke", %{access_token: access_token}, team) - end - @doc """ Normalizes errors map into errors for the given schema. """ diff --git a/lib/livebook/zta/livebook_teams.ex b/lib/livebook/zta/livebook_teams.ex index 241746fb1..9ff454c2a 100644 --- a/lib/livebook/zta/livebook_teams.ex +++ b/lib/livebook/zta/livebook_teams.ex @@ -38,14 +38,19 @@ defmodule Livebook.ZTA.LivebookTeams do # Our extension to Livebook.ZTA to deal with logouts def logout(name, conn) do token = get_session(conn, :livebook_teams_access_token) - team = Livebook.ZTA.get(name) - case Teams.Requests.logout_identity_provider(team, token) do - {:ok, _no_content} -> :ok - {:error, %{}} -> {:error, "You are already logged out."} - {:transport_error, reason} -> {:error, reason} - end + url = + Livebook.Config.teams_url() + |> URI.new!() + |> URI.append_path("/identity/logout") + |> URI.append_query("org_id=#{team.org_id}&access_token=#{token}") + |> URI.to_string() + + conn + |> configure_session(renew: true) + |> clear_session() + |> redirect(external: url) end defp handle_request(conn, team, %{"teams_identity" => _, "code" => code}) do diff --git a/lib/livebook_web/controllers/user_controller.ex b/lib/livebook_web/controllers/user_controller.ex index 8a8ba3d02..d67f352b8 100644 --- a/lib/livebook_web/controllers/user_controller.ex +++ b/lib/livebook_web/controllers/user_controller.ex @@ -17,15 +17,11 @@ defmodule LivebookWeb.UserController do conn |> configure_session(renew: true) |> clear_session() - |> render("logout.html") + |> redirect(to: ~p"/") end defp do_zta_logout(conn) do {_type, module, _key} = Livebook.Config.identity_provider() - - case module.logout(LivebookWeb.ZTA, conn) do - :ok -> do_logout(conn) - {:error, reason} -> conn |> redirect(to: ~p"/") |> put_flash(:error, reason) - end + module.logout(LivebookWeb.ZTA, conn) end end diff --git a/lib/livebook_web/controllers/user_html/logout.html.heex b/lib/livebook_web/controllers/user_html/logout.html.heex deleted file mode 100644 index 36994f801..000000000 --- a/lib/livebook_web/controllers/user_html/logout.html.heex +++ /dev/null @@ -1,18 +0,0 @@ -