Settings

Account and security settings

Change Password

{#if message}
{message}
{/if} {#if error}
{error}
{/if}
{ e.preventDefault(); changePassword(); }} class="space-y-3">

Passkeys

{#if passkeyMsg}
{passkeyMsg}
{/if} {#if passkeyErr}
{passkeyErr}
{/if} {#if passkeys.length > 0}
{#each passkeys as pk}
{pk.name} {#if pk.created_at} {new Date(pk.created_at).toLocaleDateString()} {/if}
{/each}
{:else}

No passkeys registered

{/if}
{#if passkeys.length > 1} {/if}
{#if currentUser.role === "admin" && rbacConfig}

Access Control

{#if rbacMsg}
{rbacMsg}
{/if} {#if rbacErr}
{rbacErr}
{/if}

Role Defaults

{#each Object.entries(rbacConfig.role_defaults || {}) as [role, cfg]} {#if editingRole === role}

{role}

{#each allPages as p} {/each}
{:else}
{role} {cfg.pages === "*" ? "All pages" : (cfg.pages || []).join(", ")}
{/if} {/each}

User Overrides

{#if editingUser !== "__new__"} {/if}
{#if Object.keys(rbacConfig.user_overrides || {}).length > 0}
{#each Object.entries(rbacConfig.user_overrides) as [username, cfg]} {#if editingUser === username}

{username}

{#each allPages as p} {/each}
{:else}
{username} {(cfg.pages || []).join(", ")}
{/if} {/each}
{:else if editingUser !== "__new__"}

No user overrides configured

{/if} {#if editingUser === "__new__"}
{#each allPages as p} {/each}
{/if}
{/if}

Audit Log

{#if auditEntries.length > 0}
{#each ["all", "high", "medium", "low", "info"] as lvl} {/each}
{#each filteredEntries as e}
{levelLabels[e.level]} {e.ts.replace('T', ' ')} {e.status} {e.user} {e.method} {e.path}
{/each}
{:else if !auditLoading}

Click Load to view recent audit log entries

{/if}