Current section

Files

Jump to
observer_web lib web authentication.ex
Raw

lib/web/authentication.ex

defmodule Observer.Web.Authentication do
@moduledoc """
This module provides Authentication on mount
## References:
* https://github.com/oban-bg/oban_web/blob/main/lib/oban/web/authentication.ex
"""
import Phoenix.Component
import Phoenix.LiveView
alias Observer.Web.Resolver
def on_mount(:default, _params, session, socket) do
%{"resolver" => resolver, "user" => user} = session
# Add any configuration here
conf = nil
socket = assign(socket, conf: conf, user: user)
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