tailscale/cmd/tsidp/ui-list.html
Raj Singh 09582bdc00
cmd/tsidp: add web UI for managing OIDC clients (#16068)
Add comprehensive web interface at ui for managing OIDC clients, similar to tsrecorder's design. Features include list view, create/edit forms with validation, client secret management, delete functionality with confirmation dialogs, responsive design, and restricted tailnet access only.

Fixes #16067

Signed-off-by: Raj Singh <raj@tailscale.com>
2025-05-24 18:16:29 -04:00

73 lines
2.0 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<title>Tailscale OIDC Identity Provider</title>
<link rel="stylesheet" type="text/css" href="/style.css" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
</head>
<body>
{{template "header"}}
<main>
<div class="header-actions">
<div>
<h2>OIDC Clients</h2>
{{if .}}
<p class="client-count">{{len .}} client{{if ne (len .) 1}}s{{end}} configured</p>
{{end}}
</div>
<a href="/new" class="btn btn-primary">Add New Client</a>
</div>
{{if .}}
<table>
<thead>
<tr>
<td>Name</td>
<td>Client ID</td>
<td>Redirect URI</td>
<td>Status</td>
<td>Actions</td>
</tr>
</thead>
<tbody>
{{range .}}
<tr>
<td>
{{if .Name}}
<strong>{{.Name}}</strong>
{{else}}
<span class="text-muted">Unnamed Client</span>
{{end}}
</td>
<td>
<code class="client-id">{{.ID}}</code>
</td>
<td>
<span class="redirect-uri">{{.RedirectURI}}</span>
</td>
<td>
{{if .HasSecret}}
<span class="status-active">Active</span>
{{else}}
<span class="status-inactive">No Secret</span>
{{end}}
</td>
<td>
<a href="/edit/{{.ID}}" class="btn btn-secondary btn-small">Edit</a>
</td>
</tr>
{{end}}
</tbody>
</table>
{{else}}
<div class="empty-state">
<h3>No OIDC clients configured</h3>
<p>Create your first OIDC client to get started with authentication.</p>
<a href="/new" class="btn btn-primary">Add New Client</a>
</div>
{{end}}
</main>
</body>
</html>