40 lines
993 B
Elixir
40 lines
993 B
Elixir
defmodule ZoeyscomputerWeb.ApiKeyLive.Show do
|
|
use ZoeyscomputerWeb, :live_view
|
|
|
|
alias Zoeyscomputer.ApiKeys
|
|
|
|
@impl true
|
|
def mount(_params, _session, socket) do
|
|
if connected?(socket) do
|
|
IO.puts("LiveView Connected")
|
|
end
|
|
|
|
{:ok, socket}
|
|
end
|
|
|
|
@impl true
|
|
def handle_params(%{"id" => id}, _, socket) do
|
|
api_key = ApiKeys.get_api_key!(id)
|
|
|
|
# Ensure users can only view their own API keys
|
|
if api_key.user_id == socket.assigns.current_user.id do
|
|
{:noreply,
|
|
socket
|
|
|> assign(:page_title, "API Key Details")
|
|
|> assign(:api_key, api_key)}
|
|
else
|
|
{:noreply,
|
|
socket
|
|
|> put_flash(:error, "Not authorized")
|
|
|> push_navigate(to: ~p"/api-keys")}
|
|
end
|
|
end
|
|
|
|
@impl true
|
|
def handle_event("copy_token", _, socket) do
|
|
IO.puts("Copy token event received")
|
|
token = socket.assigns.api_key.token
|
|
IO.puts("Token to copy: #{token}")
|
|
{:noreply, push_event(socket, "copy", %{text: token})}
|
|
end
|
|
end
|