Packages
livebook
0.19.4
0.19.8
0.19.7
0.19.6
0.19.5
0.19.4
0.19.3
0.19.2
0.19.1
0.19.0
0.18.6
0.18.5
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
0.17.3
0.17.2
0.17.1
0.17.0
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.14.0-rc.1
0.14.0-rc.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.1
0.12.0
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.0
0.9.3
0.9.2
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.3
0.6.2
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.1
0.4.0
0.3.2
0.3.1
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.2
0.1.1
0.1.0
Automate code & data workflows with interactive notebooks
Current section
Files
Jump to
Current section
Files
lib/livebook_web/live/hooks/auth_hook.ex
defmodule LivebookWeb.AuthHook do
import Phoenix.LiveView
use LivebookWeb, :verified_routes
def on_mount(:default, _params, session, socket) do
uri = get_connect_info(socket, :uri)
socket = attach_hook(socket, :auth_handle_info_subscription, :handle_info, &handle_info/2)
if LivebookWeb.AuthPlug.authorized?(session || %{}, uri.port) do
{:cont, socket}
else
{:halt, redirect(socket, to: ~p"/")}
end
end
defp handle_info({:server_authorization_updated, %{hub_id: hub_id}}, socket) do
# We already updated the current user, so we just need to force the redirection.
# But, for apps, we redirect directly from the app session
current_user = socket.assigns.current_user
if current_user.payload do
if current_user.access_type == :full and
Livebook.Hubs.TeamClient.user_full_access?(hub_id, current_user.groups) do
{:halt, socket}
else
{:halt, redirect(socket, to: ~p"/")}
end
else
{:halt, socket}
end
end
defp handle_info(_message, socket), do: {:cont, socket}
end