chiya/lib/chiya_web/controllers/token_controller.ex

48 lines
1.3 KiB
Elixir
Raw Permalink Normal View History

2023-06-06 22:00:42 +02:00
defmodule ChiyaWeb.TokenController do
use ChiyaWeb, :controller
alias Chiya.Accounts.UserToken
def index(conn, _params) do
tokens = conn.assigns.current_user.tokens
render(conn, :index, tokens: tokens)
end
def show(conn, %{"id" => id}) do
token_id = String.to_integer(id)
tokens = conn.assigns.current_user.tokens
token = Enum.find(tokens, fn t -> t.id == token_id end)
render(conn, :show, token: token)
end
def new(conn, _params) do
changeset =
UserToken.app_token_changeset(%UserToken{}, %{
user_id: conn.assigns.current_user.id,
context: "app"
})
render(conn, :new, changeset: changeset)
end
def create(conn, %{"user_token" => %{"sent_to" => app_name, "context" => context}}) do
case Chiya.Accounts.generate_app_token(conn.assigns.current_user, app_name, context) do
{:ok, token} ->
conn
|> put_flash(:info, "token created successfully.")
|> redirect(to: ~p"/admin/tokens/#{token}")
{:error, %Ecto.Changeset{} = changeset} ->
render(conn, :new, changeset: changeset)
end
end
def delete(conn, %{"id" => id}) do
{:ok, _token} = Chiya.Accounts.delete_app_token(id)
2023-06-06 22:00:42 +02:00
conn
|> put_flash(:info, "Token deleted successfully.")
|> redirect(to: ~p"/admin/tokens")
end
end