feat: account live view - basic functionality

This commit is contained in:
Moritz 2025-07-17 22:07:44 +02:00 committed by moritz
parent fd8c853879
commit df9966bb12
9 changed files with 389 additions and 42 deletions

View file

@ -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

View file

@ -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

View file

@ -7,12 +7,34 @@ defmodule MvWeb.UserLive.Form do
<Layouts.app flash={@flash}>
<.header>
{@page_title}
<:subtitle>Use this form to manage user records in your database.</:subtitle>
<:subtitle>{gettext("Use this form to manage user records in your database.")}</:subtitle>
</.header>
<.form for={@form} id="user-form" phx-change="validate" phx-submit="save">
<.button phx-disable-with="Saving..." variant="primary">Save User</.button>
<.button navigate={return_path(@return_to, @user)}>Cancel</.button>
<.input field={@form[:email]} label={gettext("Email")} required type="email" />
<%= if @user do %>
<div class="mt-4 p-4 bg-blue-50 rounded-lg">
<p class="text-sm text-blue-800">
<strong>{gettext("Note")}:</strong> {gettext(
"Password can only be changed through authentication functions."
)}
</p>
</div>
<% else %>
<div class="mt-4 p-4 bg-yellow-50 rounded-lg">
<p class="text-sm text-yellow-800">
<strong>{gettext("Note")}:</strong> {gettext(
"Users created here will need to set their password through the authentication system."
)}
</p>
</div>
<% end %>
<.button phx-disable-with={gettext("Saving...")} variant="primary">
{gettext("Save User")}
</.button>
<.button navigate={return_path(@return_to, @user)}>{gettext("Cancel")}</.button>
</.form>
</Layouts.app>
"""
@ -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))

View file

@ -6,10 +6,10 @@ defmodule MvWeb.UserLive.Index do
~H"""
<Layouts.app flash={@flash}>
<.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")}
</.button>
</:actions>
</.header>
@ -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>
<:col :let={{_id, user}} label="Email">{user.email}</:col>
<:col :let={{_id, user}} label={gettext("Email")}>{user.email}</:col>
<:col :let={{_id, user}} label={gettext("OIDC ID")}>{user.oidc_id}</:col>
<:action :let={{_id, user}}>
<div class="sr-only">
<.link navigate={~p"/users/#{user}"}>Show</.link>
<.link navigate={~p"/users/#{user}"}>{gettext("Show")}</.link>
</div>
<.link navigate={~p"/users/#{user}/edit"}>Edit</.link>
<.link navigate={~p"/users/#{user}/edit"}>{gettext("Edit")}</.link>
</:action>
<:action :let={{id, user}}>
<.link
phx-click={JS.push("delete", value: %{id: user.id}) |> hide("##{id}")}
data-confirm="Are you sure?"
data-confirm={gettext("Are you sure?")}
>
Delete
{gettext("Delete")}
</.link>
</:action>
</.table>
@ -48,14 +47,14 @@ defmodule MvWeb.UserLive.Index do
def mount(_params, _session, socket) do
{:ok,
socket
|> assign(:page_title, "Listing Users")
|> stream(:users, Ash.read!(Mv.Accounts.User))}
|> assign(:page_title, gettext("Listing Users"))
|> stream(:users, Ash.read!(Mv.Accounts.User, domain: Mv.Accounts))}
end
@impl true
def handle_event("delete", %{"id" => id}, socket) do
user = Ash.get!(Mv.Accounts.User, id)
Ash.destroy!(user)
user = Ash.get!(Mv.Accounts.User, id, domain: Mv.Accounts)
Ash.destroy!(user, domain: Mv.Accounts)
{:noreply, stream_delete(socket, :users, user)}
end

View file

@ -6,23 +6,26 @@ defmodule MvWeb.UserLive.Show do
~H"""
<Layouts.app flash={@flash}>
<.header>
User {@user.id}
<:subtitle>This is a user record from your database.</:subtitle>
{gettext("User")} {@user.email}
<:subtitle>{gettext("This is a user record from your database.")}</:subtitle>
<:actions>
<.button navigate={~p"/users"}>
<.icon name="hero-arrow-left" />
</.button>
<.button variant="primary" navigate={~p"/users/#{@user}/edit?return_to=show"}>
<.icon name="hero-pencil-square" /> Edit User
<.icon name="hero-pencil-square" /> {gettext("Edit User")}
</.button>
</:actions>
</.header>
<.list>
<:item title="Id">{@user.id}</:item>
<:item title="Email">{@user.email}</:item>
<:item title={gettext("ID")}>{@user.id}</:item>
<:item title={gettext("Email")}>{@user.email}</:item>
<:item title={gettext("OIDC ID")}>{@user.oidc_id || gettext("Not set")}</:item>
<:item title={gettext("Password Authentication")}>
{if @user.hashed_password, do: gettext("Enabled"), else: gettext("Not enabled")}
</:item>
</.list>
</Layouts.app>
"""
@ -32,7 +35,7 @@ defmodule MvWeb.UserLive.Show do
def mount(%{"id" => id}, _session, socket) do
{:ok,
socket
|> assign(:page_title, "Show User")
|> assign(:user, Ash.get!(Mv.Accounts.User, id))}
|> assign(:page_title, gettext("Show User"))
|> assign(:user, Ash.get!(Mv.Accounts.User, id, domain: Mv.Accounts))}
end
end

View file

@ -5,7 +5,7 @@
"ash_authentication_phoenix": {:hex, :ash_authentication_phoenix, "2.10.4", "b5a8e852dd48d875fe3089c28765379d112efed8bc1a5379f47e184d50259b73", [:mix], [{:ash, "~> 3.0", [hex: :ash, repo: "hexpm", optional: false]}, {:ash_authentication, ">= 4.9.1 and < 5.0.0-0", [hex: :ash_authentication, repo: "hexpm", optional: false]}, {:ash_phoenix, "~> 2.0", [hex: :ash_phoenix, repo: "hexpm", optional: false]}, {:bcrypt_elixir, "~> 3.0", [hex: :bcrypt_elixir, repo: "hexpm", optional: false]}, {:gettext, "~> 0.26", [hex: :gettext, repo: "hexpm", optional: true]}, {:igniter, ">= 0.5.25 and < 1.0.0-0", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.6", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_html_helpers, "~> 1.0", [hex: :phoenix_html_helpers, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 1.0", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: false]}, {:slugify, "~> 1.3", [hex: :slugify, repo: "hexpm", optional: false]}], "hexpm", "99e8ebc0606dc3ff81aac649c2838bf0d5d1d4bd880eb977cf31d2494b7a3f6a"},
"ash_phoenix": {:hex, :ash_phoenix, "2.3.11", "3003cb7fbda4eba829a67a064af15bc23f4032b86c768c3336e3a04218d19f37", [:mix], [{:ash, ">= 3.5.13 and < 4.0.0-0", [hex: :ash, repo: "hexpm", optional: false]}, {:igniter, "~> 0.6", [hex: :igniter, repo: "hexpm", optional: true]}, {:inertia, "~> 2.3", [hex: :inertia, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.5.6 or ~> 1.6", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.20.3 or ~> 1.0-rc.1", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:spark, ">= 2.2.29 and < 3.0.0-0", [hex: :spark, repo: "hexpm", optional: false]}], "hexpm", "33294de690af8c408759c629fd4212e1b4639b1da8417f5c7b31cb3898e6cb4f"},
"ash_postgres": {:hex, :ash_postgres, "2.6.11", "7c6b4fa9b8725c6644dd863323f8a2dae93f5df8ddae4b53df5dabde451a8b0c", [:mix], [{:ash, ">= 3.5.13 and < 4.0.0-0", [hex: :ash, repo: "hexpm", optional: false]}, {:ash_sql, ">= 0.2.72 and < 1.0.0-0", [hex: :ash_sql, repo: "hexpm", optional: false]}, {:ecto, "~> 3.13", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "~> 3.13", [hex: :ecto_sql, repo: "hexpm", optional: false]}, {:igniter, ">= 0.6.14 and < 1.0.0-0", [hex: :igniter, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:postgrex, ">= 0.0.0", [hex: :postgrex, repo: "hexpm", optional: false]}], "hexpm", "d915f06406b46130559481b8b4290fd3bf60b0bd57bf5a4903cde0613b642c36"},
"ash_sql": {:hex, :ash_sql, "0.2.87", "17197c643918cdaee657946a1998860402dcf53a980f7665bb81d1fa53c224e7", [], [{:ash, ">= 3.5.25 and < 4.0.0-0", [hex: :ash, repo: "hexpm", optional: false]}, {:ecto, "~> 3.9", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "~> 3.9", [hex: :ecto_sql, repo: "hexpm", optional: false]}], "hexpm", "f82d6bf78f08bd9040af3adc28676965421598c88866074d8b1ccca65978d774"},
"ash_sql": {:hex, :ash_sql, "0.2.87", "17197c643918cdaee657946a1998860402dcf53a980f7665bb81d1fa53c224e7", [:mix], [{:ash, ">= 3.5.25 and < 4.0.0-0", [hex: :ash, repo: "hexpm", optional: false]}, {:ecto, "~> 3.9", [hex: :ecto, repo: "hexpm", optional: false]}, {:ecto_sql, "~> 3.9", [hex: :ecto_sql, repo: "hexpm", optional: false]}], "hexpm", "f82d6bf78f08bd9040af3adc28676965421598c88866074d8b1ccca65978d774"},
"assent": {:hex, :assent, "0.2.13", "11226365d2d8661d23e9a2cf94d3255e81054ff9d88ac877f28bfdf38fa4ef31", [:mix], [{:certifi, ">= 0.0.0", [hex: :certifi, repo: "hexpm", optional: true]}, {:finch, "~> 0.15", [hex: :finch, repo: "hexpm", optional: true]}, {:jose, "~> 1.8", [hex: :jose, repo: "hexpm", optional: true]}, {:mint, "~> 1.0", [hex: :mint, repo: "hexpm", optional: true]}, {:req, "~> 0.4", [hex: :req, repo: "hexpm", optional: true]}, {:ssl_verify_fun, ">= 0.0.0", [hex: :ssl_verify_fun, repo: "hexpm", optional: true]}], "hexpm", "bf9f351b01dd6bceea1d1f157f05438f6765ce606e6eb8d29296003d29bf6eab"},
"bandit": {:hex, :bandit, "1.7.0", "d1564f30553c97d3e25f9623144bb8df11f3787a26733f00b21699a128105c0c", [:mix], [{:hpax, "~> 1.0", [hex: :hpax, repo: "hexpm", optional: false]}, {:plug, "~> 1.18", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:thousand_island, "~> 1.0", [hex: :thousand_island, repo: "hexpm", optional: false]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "3e2f7a98c7a11f48d9d8c037f7177cd39778e74d55c7af06fe6227c742a8168a"},
"bcrypt_elixir": {:hex, :bcrypt_elixir, "3.3.2", "d50091e3c9492d73e17fc1e1619a9b09d6a5ef99160eb4d736926fd475a16ca3", [:make, :mix], [{:comeonin, "~> 5.3", [hex: :comeonin, repo: "hexpm", optional: false]}, {:elixir_make, "~> 0.6", [hex: :elixir_make, repo: "hexpm", optional: false]}], "hexpm", "471be5151874ae7931911057d1467d908955f93554f7a6cd1b7d804cac8cef53"},

View file

@ -16,6 +16,7 @@ msgid "Actions"
msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:77
#: lib/mv_web/live/user_live/index.ex:36
#, elixir-autogen, elixir-format
msgid "Are you sure?"
msgstr "Bist du sicher?"
@ -34,14 +35,17 @@ msgid "City"
msgstr "Stadt"
#: lib/mv_web/live/member_live/index.html.heex:79
#: lib/mv_web/live/user_live/index.ex:38
#, elixir-autogen, elixir-format
msgid "Delete"
msgstr "Löschen"
#: lib/mv_web/live/member_live/index.html.heex:71
#: lib/mv_web/live/user_live/form.ex:51
#: lib/mv_web/live/user_live/index.ex:30
#, elixir-autogen, elixir-format
msgid "Edit"
msgstr "Bearbeiten"
msgstr "Bearbeite"
#: lib/mv_web/live/member_live/show.ex:18
#: lib/mv_web/live/member_live/show.ex:81
@ -52,6 +56,9 @@ msgstr "Mitglied bearbeiten"
#: lib/mv_web/live/member_live/form.ex:18
#: lib/mv_web/live/member_live/index.html.heex:58
#: lib/mv_web/live/member_live/show.ex:27
#: lib/mv_web/live/user_live/form.ex:14
#: lib/mv_web/live/user_live/index.ex:22
#: lib/mv_web/live/user_live/show.ex:24
#, elixir-autogen, elixir-format
msgid "Email"
msgstr "E-Mail"
@ -81,6 +88,7 @@ msgid "New Member"
msgstr "Neues Mitglied"
#: lib/mv_web/live/member_live/index.html.heex:68
#: lib/mv_web/live/user_live/index.ex:27
#, elixir-autogen, elixir-format
msgid "Show"
msgstr "Anzeigen"
@ -159,6 +167,7 @@ msgstr "Mitglied speichern"
#: lib/mv_web/live/member_live/form.ex:49
#: lib/mv_web/live/property_live/form.ex:41
#: lib/mv_web/live/property_type_live/form.ex:29
#: lib/mv_web/live/user_live/form.ex:34
#, elixir-autogen, elixir-format
msgid "Saving..."
msgstr "Speichern..."
@ -252,6 +261,7 @@ msgstr ""
#: lib/mv_web/live/member_live/form.ex:52
#: lib/mv_web/live/property_live/form.ex:44
#: lib/mv_web/live/property_type_live/form.ex:32
#: lib/mv_web/live/user_live/form.ex:37
#, elixir-autogen, elixir-format
msgid "Cancel"
msgstr ""
@ -271,16 +281,37 @@ msgstr ""
msgid "Description"
msgstr ""
#: lib/mv_web/live/user_live/show.ex:17
#, elixir-autogen, elixir-format
msgid "Edit User"
msgstr "Benutzer bearbeiten"
#: lib/mv_web/live/user_live/show.ex:27
#, elixir-autogen, elixir-format
msgid "Enabled"
msgstr "Aktiviert"
#: lib/mv_web/live/user_live/show.ex:23
#, elixir-autogen, elixir-format
msgid "ID"
msgstr "ID"
#: lib/mv_web/live/property_type_live/form.ex:26
#, elixir-autogen, elixir-format
msgid "Immutable"
msgstr ""
#: lib/mv_web/components/layouts/navbar.ex:35
#: lib/mv_web/components/layouts/navbar.ex:73
#, elixir-autogen, elixir-format
msgid "Logout"
msgstr ""
#: lib/mv_web/live/user_live/index.ex:9
#: lib/mv_web/live/user_live/index.ex:50
#, elixir-autogen, elixir-format
msgid "Listing Users"
msgstr "Benutzer auflisten"
#: lib/mv_web/live/property_live/form.ex:27
#, elixir-autogen, elixir-format
msgid "Member"
@ -299,12 +330,49 @@ msgstr "Mitglieder"
msgid "Name"
msgstr ""
#: lib/mv_web/live/user_live/index.ex:12
#, elixir-autogen, elixir-format
msgid "New User"
msgstr "Neuer Benutzer"
#: lib/mv_web/live/user_live/show.ex:27
#, elixir-autogen, elixir-format
msgid "Not enabled"
msgstr "Nicht aktiviert"
#: lib/mv_web/live/user_live/show.ex:25
#, elixir-autogen, elixir-format
msgid "Not set"
msgstr "Nicht gesetzt"
#: lib/mv_web/live/user_live/form.ex:19
#: lib/mv_web/live/user_live/form.ex:27
#, elixir-autogen, elixir-format
msgid "Note"
msgstr "Hinweis"
#: lib/mv_web/live/user_live/index.ex:23
#: lib/mv_web/live/user_live/show.ex:25
#, elixir-autogen, elixir-format
msgid "OIDC ID"
msgstr "OIDC ID"
#: lib/mv_web/live/user_live/show.ex:26
#, elixir-autogen, elixir-format
msgid "Password Authentication"
msgstr "Passwort-Authentifizierung"
#: lib/mv_web/live/user_live/form.ex:19
#, elixir-autogen, elixir-format
msgid "Password can only be changed through authentication functions."
msgstr ""
#: lib/mv_web/live/property_live/form.ex:37
#, elixir-autogen, elixir-format
msgid "Please select a property type first"
msgstr ""
#: lib/mv_web/components/layouts/navbar.ex:31
#: lib/mv_web/components/layouts/navbar.ex:69
#, elixir-autogen, elixir-format
msgid "Profil"
msgstr ""
@ -349,11 +417,26 @@ msgstr ""
msgid "Select member"
msgstr ""
#: lib/mv_web/components/layouts/navbar.ex:34
#: lib/mv_web/components/layouts/navbar.ex:72
#, elixir-autogen, elixir-format
msgid "Settings"
msgstr ""
#: lib/mv_web/live/user_live/form.ex:35
#, elixir-autogen, elixir-format
msgid "Save User"
msgstr "Benutzer speichern"
#: lib/mv_web/live/user_live/show.ex:38
#, elixir-autogen, elixir-format
msgid "Show User"
msgstr "Benutzer anzeigen"
#: lib/mv_web/live/user_live/show.ex:10
#, elixir-autogen, elixir-format
msgid "This is a user record from your database."
msgstr "Dies ist ein Benutzer-Datensatz aus Ihrer Datenbank."
#: lib/mv_web/live/property_live/form.ex:95
#, elixir-autogen, elixir-format
msgid "Unsupported value type: %{type}"
@ -369,6 +452,17 @@ msgstr "Dieses Formular dient zur Verwaltung von Mitgliedern und deren Eigenscha
msgid "Use this form to manage property_type records in your database."
msgstr "Dieses Formular dient zur Verwaltung von Mitgliedern und deren Eigenschaften."
#: lib/mv_web/live/user_live/form.ex:10
#, elixir-autogen, elixir-format
msgid "Use this form to manage user records in your database."
msgstr "Verwenden Sie dieses Formular, um Benutzer-Datensätze zu verwalten."
#: lib/mv_web/live/user_live/form.ex:52
#: lib/mv_web/live/user_live/show.ex:9
#, elixir-autogen, elixir-format
msgid "User"
msgstr "Benutzer"
#: lib/mv_web/live/property_live/form.ex:59
#, elixir-autogen, elixir-format
msgid "Value"
@ -388,3 +482,13 @@ msgstr ""
#, elixir-autogen, elixir-format
msgid "descending"
msgstr ""
#: lib/mv_web/live/user_live/form.ex:51
#, elixir-autogen, elixir-format
msgid "New"
msgstr "Neuer"
#: lib/mv_web/live/user_live/form.ex:27
#, elixir-autogen, elixir-format
msgid "Users created here will need to set their password through the authentication system."
msgstr "Hier erstellte Benutzer müssen ihr Passwort über das Authentifizierungssystem setzen."

View file

@ -17,6 +17,7 @@ msgid "Actions"
msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:77
#: lib/mv_web/live/user_live/index.ex:36
#, elixir-autogen, elixir-format
msgid "Are you sure?"
msgstr ""
@ -35,11 +36,14 @@ msgid "City"
msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:79
#: lib/mv_web/live/user_live/index.ex:38
#, elixir-autogen, elixir-format
msgid "Delete"
msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:71
#: lib/mv_web/live/user_live/form.ex:51
#: lib/mv_web/live/user_live/index.ex:30
#, elixir-autogen, elixir-format
msgid "Edit"
msgstr ""
@ -53,6 +57,9 @@ msgstr ""
#: lib/mv_web/live/member_live/form.ex:18
#: lib/mv_web/live/member_live/index.html.heex:58
#: lib/mv_web/live/member_live/show.ex:27
#: lib/mv_web/live/user_live/form.ex:14
#: lib/mv_web/live/user_live/index.ex:22
#: lib/mv_web/live/user_live/show.ex:24
#, elixir-autogen, elixir-format
msgid "Email"
msgstr ""
@ -82,6 +89,7 @@ msgid "New Member"
msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:68
#: lib/mv_web/live/user_live/index.ex:27
#, elixir-autogen, elixir-format
msgid "Show"
msgstr ""
@ -160,6 +168,7 @@ msgstr ""
#: lib/mv_web/live/member_live/form.ex:49
#: lib/mv_web/live/property_live/form.ex:41
#: lib/mv_web/live/property_type_live/form.ex:29
#: lib/mv_web/live/user_live/form.ex:34
#, elixir-autogen, elixir-format
msgid "Saving..."
msgstr ""
@ -253,6 +262,7 @@ msgstr ""
#: lib/mv_web/live/member_live/form.ex:52
#: lib/mv_web/live/property_live/form.ex:44
#: lib/mv_web/live/property_type_live/form.ex:32
#: lib/mv_web/live/user_live/form.ex:37
#, elixir-autogen, elixir-format
msgid "Cancel"
msgstr ""
@ -272,16 +282,37 @@ msgstr ""
msgid "Description"
msgstr ""
#: lib/mv_web/live/user_live/show.ex:17
#, elixir-autogen, elixir-format
msgid "Edit User"
msgstr ""
#: lib/mv_web/live/user_live/show.ex:27
#, elixir-autogen, elixir-format
msgid "Enabled"
msgstr ""
#: lib/mv_web/live/user_live/show.ex:23
#, elixir-autogen, elixir-format
msgid "ID"
msgstr ""
#: lib/mv_web/live/property_type_live/form.ex:26
#, elixir-autogen, elixir-format
msgid "Immutable"
msgstr ""
#: lib/mv_web/components/layouts/navbar.ex:35
#: lib/mv_web/components/layouts/navbar.ex:73
#, elixir-autogen, elixir-format
msgid "Logout"
msgstr ""
#: lib/mv_web/live/user_live/index.ex:9
#: lib/mv_web/live/user_live/index.ex:50
#, elixir-autogen, elixir-format
msgid "Listing Users"
msgstr ""
#: lib/mv_web/live/property_live/form.ex:27
#, elixir-autogen, elixir-format
msgid "Member"
@ -300,12 +331,49 @@ msgstr ""
msgid "Name"
msgstr ""
#: lib/mv_web/live/user_live/index.ex:12
#, elixir-autogen, elixir-format
msgid "New User"
msgstr ""
#: lib/mv_web/live/user_live/show.ex:27
#, elixir-autogen, elixir-format
msgid "Not enabled"
msgstr ""
#: lib/mv_web/live/user_live/show.ex:25
#, elixir-autogen, elixir-format
msgid "Not set"
msgstr ""
#: lib/mv_web/live/user_live/form.ex:19
#: lib/mv_web/live/user_live/form.ex:27
#, elixir-autogen, elixir-format
msgid "Note"
msgstr ""
#: lib/mv_web/live/user_live/index.ex:23
#: lib/mv_web/live/user_live/show.ex:25
#, elixir-autogen, elixir-format
msgid "OIDC ID"
msgstr ""
#: lib/mv_web/live/user_live/show.ex:26
#, elixir-autogen, elixir-format
msgid "Password Authentication"
msgstr ""
#: lib/mv_web/live/user_live/form.ex:19
#, elixir-autogen, elixir-format
msgid "Password can only be changed through authentication functions."
msgstr ""
#: lib/mv_web/live/property_live/form.ex:37
#, elixir-autogen, elixir-format
msgid "Please select a property type first"
msgstr ""
#: lib/mv_web/components/layouts/navbar.ex:31
#: lib/mv_web/components/layouts/navbar.ex:69
#, elixir-autogen, elixir-format
msgid "Profil"
msgstr ""
@ -350,11 +418,26 @@ msgstr ""
msgid "Select member"
msgstr ""
#: lib/mv_web/components/layouts/navbar.ex:34
#: lib/mv_web/components/layouts/navbar.ex:72
#, elixir-autogen, elixir-format
msgid "Settings"
msgstr ""
#: lib/mv_web/live/user_live/form.ex:35
#, elixir-autogen, elixir-format
msgid "Save User"
msgstr ""
#: lib/mv_web/live/user_live/show.ex:38
#, elixir-autogen, elixir-format
msgid "Show User"
msgstr ""
#: lib/mv_web/live/user_live/show.ex:10
#, elixir-autogen, elixir-format
msgid "This is a user record from your database."
msgstr ""
#: lib/mv_web/live/property_live/form.ex:95
#, elixir-autogen, elixir-format
msgid "Unsupported value type: %{type}"
@ -370,6 +453,17 @@ msgstr ""
msgid "Use this form to manage property_type records in your database."
msgstr ""
#: lib/mv_web/live/user_live/form.ex:10
#, elixir-autogen, elixir-format
msgid "Use this form to manage user records in your database."
msgstr ""
#: lib/mv_web/live/user_live/form.ex:52
#: lib/mv_web/live/user_live/show.ex:9
#, elixir-autogen, elixir-format
msgid "User"
msgstr ""
#: lib/mv_web/live/property_live/form.ex:59
#, elixir-autogen, elixir-format
msgid "Value"
@ -389,3 +483,13 @@ msgstr ""
#, elixir-autogen, elixir-format
msgid "descending"
msgstr ""
#: lib/mv_web/live/user_live/form.ex:51
#, elixir-autogen, elixir-format
msgid "New"
msgstr ""
#: lib/mv_web/live/user_live/form.ex:27
#, elixir-autogen, elixir-format
msgid "Users created here will need to set their password through the authentication system."
msgstr ""

View file

@ -17,6 +17,7 @@ msgid "Actions"
msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:77
#: lib/mv_web/live/user_live/index.ex:36
#, elixir-autogen, elixir-format
msgid "Are you sure?"
msgstr ""
@ -35,11 +36,14 @@ msgid "City"
msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:79
#: lib/mv_web/live/user_live/index.ex:38
#, elixir-autogen, elixir-format
msgid "Delete"
msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:71
#: lib/mv_web/live/user_live/form.ex:51
#: lib/mv_web/live/user_live/index.ex:30
#, elixir-autogen, elixir-format
msgid "Edit"
msgstr ""
@ -53,6 +57,9 @@ msgstr ""
#: lib/mv_web/live/member_live/form.ex:18
#: lib/mv_web/live/member_live/index.html.heex:58
#: lib/mv_web/live/member_live/show.ex:27
#: lib/mv_web/live/user_live/form.ex:14
#: lib/mv_web/live/user_live/index.ex:22
#: lib/mv_web/live/user_live/show.ex:24
#, elixir-autogen, elixir-format
msgid "Email"
msgstr ""
@ -82,6 +89,7 @@ msgid "New Member"
msgstr ""
#: lib/mv_web/live/member_live/index.html.heex:68
#: lib/mv_web/live/user_live/index.ex:27
#, elixir-autogen, elixir-format
msgid "Show"
msgstr ""
@ -160,6 +168,7 @@ msgstr ""
#: lib/mv_web/live/member_live/form.ex:49
#: lib/mv_web/live/property_live/form.ex:41
#: lib/mv_web/live/property_type_live/form.ex:29
#: lib/mv_web/live/user_live/form.ex:34
#, elixir-autogen, elixir-format
msgid "Saving..."
msgstr ""
@ -253,6 +262,7 @@ msgstr ""
#: lib/mv_web/live/member_live/form.ex:52
#: lib/mv_web/live/property_live/form.ex:44
#: lib/mv_web/live/property_type_live/form.ex:32
#: lib/mv_web/live/user_live/form.ex:37
#, elixir-autogen, elixir-format
msgid "Cancel"
msgstr ""
@ -272,16 +282,37 @@ msgstr ""
msgid "Description"
msgstr ""
#: lib/mv_web/live/user_live/show.ex:17
#, elixir-autogen, elixir-format, fuzzy
msgid "Edit User"
msgstr ""
#: lib/mv_web/live/user_live/show.ex:27
#, elixir-autogen, elixir-format
msgid "Enabled"
msgstr ""
#: lib/mv_web/live/user_live/show.ex:23
#, elixir-autogen, elixir-format
msgid "ID"
msgstr ""
#: lib/mv_web/live/property_type_live/form.ex:26
#, elixir-autogen, elixir-format
msgid "Immutable"
msgstr ""
#: lib/mv_web/components/layouts/navbar.ex:35
#: lib/mv_web/components/layouts/navbar.ex:73
#, elixir-autogen, elixir-format
msgid "Logout"
msgstr ""
#: lib/mv_web/live/user_live/index.ex:9
#: lib/mv_web/live/user_live/index.ex:50
#, elixir-autogen, elixir-format, fuzzy
msgid "Listing Users"
msgstr ""
#: lib/mv_web/live/property_live/form.ex:27
#, elixir-autogen, elixir-format
msgid "Member"
@ -300,12 +331,49 @@ msgstr ""
msgid "Name"
msgstr ""
#: lib/mv_web/live/user_live/index.ex:12
#, elixir-autogen, elixir-format
msgid "New User"
msgstr ""
#: lib/mv_web/live/user_live/show.ex:27
#, elixir-autogen, elixir-format
msgid "Not enabled"
msgstr ""
#: lib/mv_web/live/user_live/show.ex:25
#, elixir-autogen, elixir-format, fuzzy
msgid "Not set"
msgstr ""
#: lib/mv_web/live/user_live/form.ex:19
#: lib/mv_web/live/user_live/form.ex:27
#, elixir-autogen, elixir-format, fuzzy
msgid "Note"
msgstr ""
#: lib/mv_web/live/user_live/index.ex:23
#: lib/mv_web/live/user_live/show.ex:25
#, elixir-autogen, elixir-format
msgid "OIDC ID"
msgstr ""
#: lib/mv_web/live/user_live/show.ex:26
#, elixir-autogen, elixir-format
msgid "Password Authentication"
msgstr ""
#: lib/mv_web/live/user_live/form.ex:19
#, elixir-autogen, elixir-format
msgid "Password can only be changed through authentication functions."
msgstr ""
#: lib/mv_web/live/property_live/form.ex:37
#, elixir-autogen, elixir-format
msgid "Please select a property type first"
msgstr ""
#: lib/mv_web/components/layouts/navbar.ex:31
#: lib/mv_web/components/layouts/navbar.ex:69
#, elixir-autogen, elixir-format
msgid "Profil"
msgstr ""
@ -350,11 +418,26 @@ msgstr ""
msgid "Select member"
msgstr ""
#: lib/mv_web/components/layouts/navbar.ex:34
#: lib/mv_web/components/layouts/navbar.ex:72
#, elixir-autogen, elixir-format
msgid "Settings"
msgstr ""
#: lib/mv_web/live/user_live/form.ex:35
#, elixir-autogen, elixir-format, fuzzy
msgid "Save User"
msgstr ""
#: lib/mv_web/live/user_live/show.ex:38
#, elixir-autogen, elixir-format, fuzzy
msgid "Show User"
msgstr ""
#: lib/mv_web/live/user_live/show.ex:10
#, elixir-autogen, elixir-format, fuzzy
msgid "This is a user record from your database."
msgstr ""
#: lib/mv_web/live/property_live/form.ex:95
#, elixir-autogen, elixir-format
msgid "Unsupported value type: %{type}"
@ -370,6 +453,17 @@ msgstr ""
msgid "Use this form to manage property_type records in your database."
msgstr ""
#: lib/mv_web/live/user_live/form.ex:10
#, elixir-autogen, elixir-format, fuzzy
msgid "Use this form to manage user records in your database."
msgstr ""
#: lib/mv_web/live/user_live/form.ex:52
#: lib/mv_web/live/user_live/show.ex:9
#, elixir-autogen, elixir-format
msgid "User"
msgstr ""
#: lib/mv_web/live/property_live/form.ex:59
#, elixir-autogen, elixir-format
msgid "Value"
@ -389,3 +483,13 @@ msgstr ""
#, elixir-autogen, elixir-format
msgid "descending"
msgstr ""
#: lib/mv_web/live/user_live/form.ex:51
#, elixir-autogen, elixir-format
msgid "New"
msgstr ""
#: lib/mv_web/live/user_live/form.ex:27
#, elixir-autogen, elixir-format
msgid "Users created here will need to set their password through the authentication system."
msgstr ""