diff --git a/lib/accounts/accounts.ex b/lib/accounts/accounts.ex
index 756c468..333e12e 100644
--- a/lib/accounts/accounts.ex
+++ b/lib/accounts/accounts.ex
@@ -11,9 +11,9 @@ defmodule Mv.Accounts do
resources do
resource Mv.Accounts.User do
- define :create_user, action: :create
+ define :create_user, action: :create_user
define :list_users, action: :read
- define :update_user, action: :update
+ define :update_user, action: :update_user
define :destroy_user, action: :destroy
end
diff --git a/lib/accounts/user.ex b/lib/accounts/user.ex
index 18fd3aa..53156b4 100644
--- a/lib/accounts/user.ex
+++ b/lib/accounts/user.ex
@@ -63,6 +63,14 @@ defmodule Mv.Accounts.User do
actions do
defaults [:read, :create, :destroy, :update]
+ create :create_user do
+ accept [:email]
+ end
+
+ update :update_user do
+ accept [:email]
+ end
+
read :get_by_subject do
description "Get a user by the subject claim in a JWT"
argument :subject, :string, allow_nil?: false
diff --git a/lib/mv_web/live/user_live/form.ex b/lib/mv_web/live/user_live/form.ex
index 53d7af7..dd78c0c 100644
--- a/lib/mv_web/live/user_live/form.ex
+++ b/lib/mv_web/live/user_live/form.ex
@@ -7,12 +7,34 @@ defmodule MvWeb.UserLive.Form do
<.header>
{@page_title}
- <:subtitle>Use this form to manage user records in your database.
+ <:subtitle>{gettext("Use this form to manage user records in your database.")}
<.form for={@form} id="user-form" phx-change="validate" phx-submit="save">
- <.button phx-disable-with="Saving..." variant="primary">Save User
- <.button navigate={return_path(@return_to, @user)}>Cancel
+ <.input field={@form[:email]} label={gettext("Email")} required type="email" />
+
+ <%= if @user do %>
+
+
+ {gettext("Note")}: {gettext(
+ "Password can only be changed through authentication functions."
+ )}
+
+
+ <% else %>
+
+
+ {gettext("Note")}: {gettext(
+ "Users created here will need to set their password through the authentication system."
+ )}
+
+
+ <% end %>
+
+ <.button phx-disable-with={gettext("Saving...")} variant="primary">
+ {gettext("Save User")}
+
+ <.button navigate={return_path(@return_to, @user)}>{gettext("Cancel")}
"""
@@ -23,11 +45,11 @@ defmodule MvWeb.UserLive.Form do
user =
case params["id"] do
nil -> nil
- id -> Ash.get!(Mv.Accounts.User, id)
+ id -> Ash.get!(Mv.Accounts.User, id, domain: Mv.Accounts)
end
- action = if is_nil(user), do: "New", else: "Edit"
- page_title = action <> " " <> "User"
+ action = if is_nil(user), do: gettext("New"), else: gettext("Edit")
+ page_title = action <> " " <> gettext("User")
{:ok,
socket
@@ -67,9 +89,12 @@ defmodule MvWeb.UserLive.Form do
defp assign_form(%{assigns: %{user: user}} = socket) do
form =
if user do
- AshPhoenix.Form.for_update(user, :update, as: "user")
+ AshPhoenix.Form.for_update(user, :update_user, domain: Mv.Accounts, as: "user")
else
- AshPhoenix.Form.for_create(Mv.Accounts.User, :create, as: "user")
+ AshPhoenix.Form.for_create(Mv.Accounts.User, :create_user,
+ domain: Mv.Accounts,
+ as: "user"
+ )
end
assign(socket, form: to_form(form))
diff --git a/lib/mv_web/live/user_live/index.ex b/lib/mv_web/live/user_live/index.ex
index 47fee2f..d3c2dcd 100644
--- a/lib/mv_web/live/user_live/index.ex
+++ b/lib/mv_web/live/user_live/index.ex
@@ -6,10 +6,10 @@ defmodule MvWeb.UserLive.Index do
~H"""
<.header>
- Listing Users
+ {gettext("Listing Users")}
<:actions>
<.button variant="primary" navigate={~p"/users/new"}>
- <.icon name="hero-plus" /> New User
+ <.icon name="hero-plus" /> {gettext("New User")}
@@ -19,24 +19,23 @@ defmodule MvWeb.UserLive.Index do
rows={@streams.users}
row_click={fn {_id, user} -> JS.navigate(~p"/users/#{user}") end}
>
- <:col :let={{_id, user}} label="Id">{user.id}
-
- <:col :let={{_id, user}} label="Email">{user.email}
+ <:col :let={{_id, user}} label={gettext("Email")}>{user.email}
+ <:col :let={{_id, user}} label={gettext("OIDC ID")}>{user.oidc_id}
<:action :let={{_id, user}}>