Migrates all admin-related flash messages to gettext for internationalization: - Admin.UserLive.Index: user deletion messages - Admin.OrgLive.Index: organization deletion messages - UserAuth: impersonation start/stop messages Adds Gettext backend and helpers import to UserAuth module to support translations. All admin and auth tests passing (87 tests).
43 lines
1.2 KiB
Elixir
43 lines
1.2 KiB
Elixir
defmodule ToweropsWeb.Admin.OrgLive.Index do
|
|
@moduledoc """
|
|
Admin interface for viewing and managing organizations.
|
|
"""
|
|
use ToweropsWeb, :live_view
|
|
|
|
alias Towerops.Admin
|
|
|
|
@impl true
|
|
def mount(_params, _session, socket) do
|
|
orgs = Admin.list_all_organizations()
|
|
|
|
{:ok,
|
|
socket
|
|
|> assign(:page_title, "All Organizations")
|
|
|> assign(:timezone, socket.assigns.current_scope.timezone)
|
|
|> assign(:organizations, orgs)}
|
|
end
|
|
|
|
@impl true
|
|
def handle_event("delete_org", %{"id" => org_id}, socket) do
|
|
superuser = socket.assigns.current_scope.superuser || socket.assigns.current_scope.user
|
|
ip = get_connect_info_ip(socket)
|
|
|
|
case Admin.delete_organization(org_id, superuser.id, ip) do
|
|
{:ok, _} ->
|
|
{:noreply,
|
|
socket
|
|
|> put_flash(:info, t_admin("Organization deleted successfully"))
|
|
|> assign(:organizations, Admin.list_all_organizations())}
|
|
|
|
{:error, _} ->
|
|
{:noreply, put_flash(socket, :error, t_admin("Failed to delete organization"))}
|
|
end
|
|
end
|
|
|
|
defp get_connect_info_ip(socket) do
|
|
case get_connect_info(socket, :peer_data) do
|
|
%{address: address} -> to_string(:inet_parse.ntoa(address))
|
|
_ -> "unknown"
|
|
end
|
|
end
|
|
end
|