Current section
Files
Jump to
Current section
Files
lib/oban/web/authentication.ex
defmodule Oban.Web.Authentication do
@moduledoc false
import Phoenix.Component
import Phoenix.LiveView
alias Oban.Web.{Resolver, Telemetry}
def on_mount(:default, params, session, socket) do
%{"oban" => oban, "resolver" => resolver, "user" => user} = session
conf = if Oban.whereis(oban), do: Oban.config(oban), else: nil
socket = assign(socket, conf: conf, user: user)
Telemetry.action(:mount, socket, [params: params], fn ->
case Resolver.call_with_fallback(resolver, :resolve_access, [user]) do
{:forbidden, path} ->
socket =
socket
|> put_flash(:error, "Access forbidden")
|> redirect(to: path)
{:halt, socket}
_ ->
{:cont, socket}
end
end)
end
end