Add Super Viewer read-only administrator role
CI / checks (push) Successful in 5m40s

This commit is contained in:
2026-10-11 23:30:40 -04:00
parent 253d47300c
commit 4ea291d305
48 changed files with 1684 additions and 933 deletions
+6 -2
View File
@@ -1,4 +1,6 @@
<script lang="ts">
import { canOperate } from '$lib/auth.js';
const writable = $derived(canOperate($page.data?.user?.role));
import { plural } from '$ui/plural.js';
import RelativeTime from '$ui/components/RelativeTime.svelte';
import { contextHref } from '$lib/navigation-context.js';
@@ -170,6 +172,7 @@
onMount(() => pollVisible(loadDetail, 5000, false));
async function resume() {
if (!writable) return;
resuming = true;
resumeError = '';
try {
@@ -188,6 +191,7 @@
}
async function rollback() {
if (!writable) return;
if (!detail || rollingBack) return;
const id = detail.deployment.id;
const servers = detail.servers.filter((server) => !server.server_deleted_at).length;
@@ -299,7 +303,7 @@
$page.url
)}>View rollback</Button
>
{:else if detail && action === 'promote' && !detail.fileContentsExpired && detail.servers.some((server) => !server.server_deleted_at)}
{:else if writable && detail && action === 'promote' && !detail.fileContentsExpired && detail.servers.some((server) => !server.server_deleted_at)}
<Button
variant="danger"
size="sm"
@@ -380,7 +384,7 @@
>All servers activated</span
>{/if}
</div>
{#if detail.servers.some((server) => !server.server_deleted_at && ['held', 'manual'].includes(server.restart_state))}
{#if writable && detail.servers.some((server) => !server.server_deleted_at && ['held', 'manual'].includes(server.restart_state))}
<Button size="sm" onclick={resume} loading={resuming} disabled={resuming}
>Resume when empty</Button
>