Packages

WebSocket-first Elixir framework with auto-generated HTTP MCP APIs

Current section

Files

Jump to
dialup priv templates dialup.gen.auth settings_page.ex.eex
Raw

priv/templates/dialup.gen.auth/settings_page.ex.eex

defmodule Dialup.App.Settings.Page do
@moduledoc """
Account settings at /settings (requires login).
"""
use Dialup.Page
@impl true
def mount(_params, session) do
if session[:current_user] do
{:ok, session}
else
{:redirect, "/log_in"}
end
end
@impl true
def agent_grant(assigns) do
if assigns[:current_user] do
Dialup.Auth.Grants.logged_in_grant(assigns.current_user,
capabilities: [:read_scene, :issue_browser_url],
projections: [:state, :regions, :actions]
)
else
Dialup.Auth.Grants.guest_grant()
end
end
@impl true
def agent_state(assigns) do
%{user: Dialup.Auth.public_user(assigns[:current_user])}
end
@impl true
def render(assigns) do
~H"""
<section class="auth-card">
<h1>Settings</h1>
<p>Signed in as {@current_user.email}</p>
<form method="post" action="/log_out" class="auth-form">
<input type="hidden" name="csrf_token" value={@csrf_token} />
<button type="submit">Log out</button>
</form>
</section>
"""
end
end