towerops/lib/towerops_web/controllers/api/v1/organization_controller.ex
Graham McIntire 146f5745cf
fix: resolve compilation errors, test failures, and credo issues
- Escape HEEx template braces in GraphQL/API docs with raw(~S[...])
- Fix test assertions for updated marketing copy and UI text
- Extract helper functions in GraphQL resolvers to reduce nesting depth
- Create shared ErrorHelpers module for API controllers
- Fix ETS race condition in brute force whitelist cache for async tests
- Fix property test generators to use ASCII instead of printable unicode
- Add alert_severity helper to site_live/show
- Update accounts fixtures for explicit user confirmation
2026-02-14 12:23:10 -06:00

59 lines
1.9 KiB
Elixir

defmodule ToweropsWeb.Api.V1.OrganizationController do
@moduledoc "API controller for current organization settings."
use ToweropsWeb, :controller
import ToweropsWeb.Api.ErrorHelpers, only: [translate_errors: 1]
alias Towerops.Organizations
def show(conn, _params) do
organization_id = conn.assigns.current_organization_id
org = Organizations.get_organization!(organization_id)
json(conn, %{data: format_org(org)})
end
def update(conn, %{"organization" => attrs}) do
organization_id = conn.assigns.current_organization_id
org = Organizations.get_organization!(organization_id)
case Organizations.update_organization(org, attrs) do
{:ok, updated} ->
json(conn, %{data: format_org(updated)})
{:error, changeset} ->
conn
|> put_status(:unprocessable_entity)
|> json(%{errors: translate_errors(changeset)})
end
end
def update(conn, _params) do
conn |> put_status(:bad_request) |> json(%{error: "Missing 'organization' parameter"})
end
defp format_org(org) do
%{
id: org.id,
name: org.name,
slug: org.slug,
subscription_plan: org.subscription_plan,
use_sites: org.use_sites,
snmp_version: org.snmp_version,
snmp_community: org.snmp_community,
snmp_port: org.snmp_port,
snmp_transport: org.snmp_transport,
snmpv3_security_level: org.snmpv3_security_level,
snmpv3_username: org.snmpv3_username,
snmpv3_auth_protocol: org.snmpv3_auth_protocol,
snmpv3_priv_protocol: org.snmpv3_priv_protocol,
mikrotik_enabled: org.mikrotik_enabled,
mikrotik_username: org.mikrotik_username,
mikrotik_port: org.mikrotik_port,
mikrotik_ssh_port: org.mikrotik_ssh_port,
mikrotik_use_ssl: org.mikrotik_use_ssl,
default_agent_token_id: org.default_agent_token_id,
inserted_at: org.inserted_at,
updated_at: org.updated_at
}
end
end