- Repository migration 0005: insight.SupportCases. The web UI has only db_datareader, so INSERT on this one table is granted to public. - Web: /support (menu "Support") lists the customer's cases and, with Hub sync on and a Professional/Enterprise license, a form (title, description, contact; contact prefilled from the Windows user). /support?fund=<id> prefills from a finding: instance, rule, severity, explanation and non-sensitive measurements. - "Opret supportsag" on findings: right-click a finding link or a finding's heading (support-menu.js, a static file within the CSP; Shift+F10/context key, Escape closes), and a visible button on the finding page that works without JavaScript. Only when support is available. - Agent: sends pending requests to POST /api/v1/cases, stores the case number, backs off on failures and gives up on 400/401/403/422; fetches the customer's cases every 5 minutes (at once after sending). - Docs: support.md (also on the community site), databehandling.md (contact details are sent to the hub). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
57 lines
2.4 KiB
Text
57 lines
2.4 KiB
Text
@inherits LayoutComponentBase
|
|
@inject Microsoft.Extensions.Options.IOptions<WebOptions> Options
|
|
@inject InsightRepository Repository
|
|
|
|
<div class="shell">
|
|
<aside class="sidebar">
|
|
<a class="brand" href="/">
|
|
<span class="logo" aria-hidden="true">SI</span>
|
|
<span>SQLInsight <strong>Pro</strong></span>
|
|
</a>
|
|
|
|
<nav class="nav">
|
|
<span class="nav-label">Overvågning</span>
|
|
<NavLink href="/" Match="NavLinkMatch.All"><Icon Name="servers" /> Instanser</NavLink>
|
|
<NavLink href="/fund"><Icon Name="list" /> Alle fund</NavLink>
|
|
<NavLink href="/rapporter"><Icon Name="book" /> Rapporter</NavLink>
|
|
<NavLink href="/system"><Icon Name="gauge" /> System</NavLink>
|
|
<NavLink href="/support"><Icon Name="support" /> Support</NavLink>
|
|
|
|
<span class="nav-label">Community</span>
|
|
<a href="@Options.Value.ForumUrl" rel="noopener"><Icon Name="users" /> Forum</a>
|
|
<a href="@(new Uri(Options.Value.CommunityUrl, "dokumentation"))" rel="noopener"><Icon Name="book" /> Dokumentation</a>
|
|
</nav>
|
|
|
|
<div class="support-card">
|
|
<Icon Name="support" />
|
|
<strong>Brug for en ekspert?</strong>
|
|
<p>Professional og Enterprise giver prioriteret mail- og telefonsupport fra erfarne SQL Server-folk.</p>
|
|
<a href="@(new Uri(Options.Value.CommunityUrl, "support"))" rel="noopener">Se supportaftaler</a>
|
|
</div>
|
|
</aside>
|
|
|
|
<div class="main">
|
|
<header class="topbar">
|
|
<span class="topbar-note">Gratis og open source · kører on-prem</span>
|
|
<button type="button" class="theme-toggle" data-theme-toggle title="Skift mellem lyst og mørkt tema">
|
|
<Icon Name="moon" /> <span>Tema</span>
|
|
</button>
|
|
</header>
|
|
<main class="page">
|
|
@Body
|
|
</main>
|
|
<footer class="footer">SQLInsight Pro · MIT-licens · <a href="https://git.seosoft.dk/seo/sqlinsight-pro">kildekode</a></footer>
|
|
</div>
|
|
</div>
|
|
@if (_supportAvailable)
|
|
{
|
|
@* Tells support-menu.js that "Opret supportsag" may be offered on findings. *@
|
|
<div hidden data-support-available></div>
|
|
}
|
|
|
|
@code {
|
|
private bool _supportAvailable;
|
|
|
|
protected override async Task OnInitializedAsync() =>
|
|
_supportAvailable = (await Repository.GetHubStatusAsync())?.AllowsSupportCases == true;
|
|
}
|