feat: add RFC 8288 Link response headers to homepage
This commit is contained in:
parent
e370924083
commit
42480144da
2 changed files with 27 additions and 1 deletions
|
|
@ -4,7 +4,8 @@ defmodule ToweropsWeb.PageController do
|
|||
use ToweropsWeb, :controller
|
||||
|
||||
def home(conn, _params) do
|
||||
# If user is authenticated, redirect to organization list
|
||||
conn = put_link_headers(conn)
|
||||
|
||||
if conn.assigns.current_scope && conn.assigns.current_scope.user do
|
||||
redirect(conn, to: ~p"/dashboard")
|
||||
else
|
||||
|
|
@ -12,6 +13,20 @@ defmodule ToweropsWeb.PageController do
|
|||
end
|
||||
end
|
||||
|
||||
defp put_link_headers(conn) do
|
||||
link_value =
|
||||
Enum.join(
|
||||
[
|
||||
~s(</.well-known/api-catalog>; rel="api-catalog"),
|
||||
~s(</docs/api>; rel="service-doc"),
|
||||
~s(</health>; rel="status")
|
||||
],
|
||||
", "
|
||||
)
|
||||
|
||||
put_resp_header(conn, "link", link_value)
|
||||
end
|
||||
|
||||
def privacy(conn, _params) do
|
||||
render(conn, :privacy,
|
||||
current_scope: conn.assigns[:current_scope],
|
||||
|
|
|
|||
|
|
@ -9,6 +9,17 @@ defmodule ToweropsWeb.PageControllerTest do
|
|||
assert html_response(conn, 200) =~ "network event"
|
||||
end
|
||||
|
||||
test "homepage includes RFC 8288 Link discovery headers", %{conn: conn} do
|
||||
conn = get(conn, ~p"/")
|
||||
link_header = conn |> get_resp_header("link") |> List.first()
|
||||
assert link_header =~ ~s(rel="api-catalog")
|
||||
assert link_header =~ ~s(rel="service-doc")
|
||||
assert link_header =~ ~s(rel="status")
|
||||
assert link_header =~ "/.well-known/api-catalog"
|
||||
assert link_header =~ "/docs/api"
|
||||
assert link_header =~ "/health"
|
||||
end
|
||||
|
||||
test "GET / redirects to organizations when authenticated", %{conn: conn} do
|
||||
user = user_fixture()
|
||||
conn = log_in_user(conn, user)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue