Working basic frontend implementation

This commit is contained in:
2026-03-30 02:06:15 -04:00
parent dcca583461
commit a13f80cf07
6 changed files with 220 additions and 70 deletions

View File

@@ -303,6 +303,8 @@ defmodule Mixer.Accounts.User do
has_many :valid_api_keys, Mixer.Accounts.ApiKey do
filter expr(valid)
end
has_many :tweets, Mixer.Posts.Tweet
end
identities do

View File

@@ -16,7 +16,7 @@ defmodule Mixer.Posts.Tweet do
end
state_machine do
initial_states [:drafted]
initial_states [:drafted, :posted]
default_initial_state :drafted
transitions do
@@ -57,4 +57,18 @@ defmodule Mixer.Posts.Tweet do
public? true
end
end
policies do
policy action_type(:read) do
authorize_if always()
end
policy action_type(:create) do
authorize_if actor_present()
end
policy action_type([:destroy, :update]) do
authorize_if relates_to_actor_via(:user)
end
end
end

View File

@@ -5,7 +5,9 @@ defmodule MixerWeb.PageController do
render(conn, :home)
end
def index conn, _params do
conn |> put_root_layout(html: {MixerWeb.Layouts, :spa_root}) |> render(:index)
def index(conn, _params) do
conn
|> put_root_layout(html: {MixerWeb.Layouts, :spa_root})
|> render(:index, current_user: conn.assigns[:current_user])
end
end

View File

@@ -1 +1,4 @@
<div id="app"></div>
<div id="app"
data-current-user-id={if @current_user, do: @current_user.id, else: ""}
data-current-user-email={if @current_user, do: @current_user.email, else: ""}>
</div>

View File

@@ -19,6 +19,7 @@ defmodule MixerWeb.Router do
plug :protect_from_forgery
plug :put_secure_browser_headers
plug :load_from_session
plug :set_actor, :user
end
pipeline :api do