Loads the current account from a session and optionally requires authentication.
Use it as a plug after fetch_session, and as an on_mount hook for LiveViews:
pipeline :browser do
plug :fetch_session
plug Ithibati.Web.Gate, :current_account
end
live_session :members,
on_mount: [{Ithibati.Web.Gate, {:require_account, to: "/sign-in"}}] do
live "/inside", InsideLive
endBoth forms assign :current_account to the account or nil.
:current_accountalways continues.:require_accountrefuses unauthenticated access. The plug redirects when givento:and otherwise sends401. The LiveView hook requiresto:and redirects there.
Unknown modes and options raise ArgumentError. The gate reads session tokens only;
application permissions and bearer-token authentication remain application concerns.
Summary
Functions
Returns the LiveView disconnect topic derived from a plaintext session token.
Creates a session token, renews and clears the browser session, and returns the connection.
Revokes the current session token, renews and clears the browser session, and returns the connection.
Loads :current_account during a LiveView mount and enforces the selected mode.
The session key Ithibati stores its token under.
Functions
Returns the LiveView disconnect topic derived from a plaintext session token.
The topic contains a URL-safe encoding of the token's digest, so it does not expose the plaintext token to PubSub subscribers or logs. It identifies one session, not every session belonging to an account.
Use this when implementing a separate revocation path that holds the plaintext token and
needs to broadcast "disconnect". Do not pass the digest stored in the database; it would
be hashed again and produce a different topic.
Creates a session token, renews and clears the browser session, and returns the connection.
account must belong to the configured account schema and exist in the database. The new
token is stored under session_key/0. Existing session contents are cleared; retain anything
the next page needs only after this call.
When the connection's endpoint has a PubSub server, the session also receives the
live_socket_id used to disconnect this session's LiveViews on logout.
Complete sign-in with a full page load to refresh the CSRF token. The shipped browser hook
does this for a JSON response containing %{redirect: path}.
This call does not revoke the account's other session rows.
Revokes the current session token, renews and clears the browser session, and returns the connection.
When the session has a live-socket topic and the endpoint has a PubSub server, this also
broadcasts "disconnect" to that topic. LiveView sockets must receive session information
through connect_info to subscribe to it. Without that setup, revocation affects subsequent
session lookups but does not disconnect existing sockets.
A missing token is harmless. Other sessions belonging to the account are unaffected.
Loads :current_account during a LiveView mount and enforces the selected mode.
Returns {:cont, socket} in :current_account mode and for authenticated mounts in
:require_account mode. An unauthenticated required mount returns {:halt, socket} with a
redirect to the required :to path.
A missing :to, unknown mode or unknown option raises ArgumentError. Account assignment
uses assign_new/3 so an account already loaded by the plug or parent LiveView can be reused.
The session key Ithibati stores its token under.