feature/account_view closes #106 #109

Merged
moritz merged 10 commits from feature/account_view into main 2025-07-24 17:08:34 +02:00
9 changed files with 389 additions and 42 deletions
Showing only changes of commit df9966bb12 - Show all commits

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>
moritz marked this conversation as resolved Outdated

maybe at some point we can seperate the sort function as we use the same in members?

maybe at some point we can seperate the sort function as we use the same in members?

Yes I think we can do some refactoring like this in a few weeks to merge some duplicated functions. I created this issue to collect some refactor steps: #122

Yes I think we can do some refactoring like this in a few weeks to merge some duplicated functions. I created this issue to collect some refactor steps: https://git.local-it.org/local-it/mitgliederverwaltung/issues/122
@ -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"},
moritz marked this conversation as resolved Outdated

What does that do?

What does that do?

This was generated by mix deps.update It just means that ash_sql was installed by mix and its used for mix.

This was generated by `mix deps.update` It just means that ash_sql was installed by mix and its used for mix.
"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 ""