first commit ish
This commit is contained in:
@@ -4,6 +4,8 @@
|
||||
@using Microsoft.EntityFrameworkCore
|
||||
@rendermode InteractiveServer
|
||||
@inject TenantService TenantService
|
||||
@inject UserAccessService UserAccessService
|
||||
@inject AuthenticationStateProvider AuthStateProvider
|
||||
@inject NavigationManager Navigation
|
||||
|
||||
<PageTitle>@(tenant?.Name ?? "Tenant")</PageTitle>
|
||||
@@ -68,6 +70,56 @@ else
|
||||
<i class="bi bi-person-badge me-1"></i>Identity
|
||||
</button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button class="nav-link @(activeTab == "registry" ? "active" : "")" @onclick='() => activeTab = "registry"'>
|
||||
<i class="bi bi-archive me-1"></i>Registry
|
||||
</button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button class="nav-link @(activeTab == "messaging" ? "active" : "")" @onclick='() => activeTab = "messaging"'>
|
||||
<i class="bi bi-collection me-1"></i>Messaging
|
||||
</button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button class="nav-link @(activeTab == "cache" ? "active" : "")" @onclick='() => activeTab = "cache"'>
|
||||
<i class="bi bi-lightning-charge me-1"></i>Cache
|
||||
</button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button class="nav-link @(activeTab == "overview" ? "active" : "")" @onclick='() => activeTab = "overview"'>
|
||||
<i class="bi bi-speedometer2 me-1"></i>Overview
|
||||
</button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button class="nav-link @(activeTab == "incidents" ? "active" : "")" @onclick='() => activeTab = "incidents"'>
|
||||
<i class="bi bi-bell-fill me-1"></i>Incidents
|
||||
</button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button class="nav-link @(activeTab == "notifications" ? "active" : "")" @onclick='() => activeTab = "notifications"'>
|
||||
<i class="bi bi-send-fill me-1"></i>Notifications
|
||||
</button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button class="nav-link @(activeTab == "maintenance" ? "active" : "")" @onclick='() => activeTab = "maintenance"'>
|
||||
<i class="bi bi-tools me-1"></i>Maintenance
|
||||
</button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button class="nav-link @(activeTab == "sla" ? "active" : "")" @onclick='() => activeTab = "sla"'>
|
||||
<i class="bi bi-shield-check me-1"></i>SLA
|
||||
</button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button class="nav-link @(activeTab == "networking" ? "active" : "")" @onclick='() => activeTab = "networking"'>
|
||||
<i class="bi bi-shield-lock me-1"></i>Networking
|
||||
</button>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<button class="nav-link @(activeTab == "git" ? "active" : "")" @onclick='() => activeTab = "git"'>
|
||||
<i class="bi bi-git me-1"></i>Git
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="tab-content">
|
||||
@@ -94,6 +146,36 @@ else
|
||||
case "identity":
|
||||
<IdentityTab TenantId="tenant.Id" />
|
||||
break;
|
||||
case "registry":
|
||||
<RegistryTab TenantId="tenant.Id" />
|
||||
break;
|
||||
case "messaging":
|
||||
<MessagingTab TenantId="tenant.Id" />
|
||||
break;
|
||||
case "cache":
|
||||
<CacheTab TenantId="tenant.Id" />
|
||||
break;
|
||||
case "overview":
|
||||
<TenantMonitoringOverview TenantId="tenant.Id" TenantSlug="tenant.Slug" />
|
||||
break;
|
||||
case "incidents":
|
||||
<IncidentManagement TenantId="tenant.Id" />
|
||||
break;
|
||||
case "notifications":
|
||||
<NotificationChannels TenantId="tenant.Id" />
|
||||
break;
|
||||
case "maintenance":
|
||||
<MaintenanceWindows TenantId="tenant.Id" />
|
||||
break;
|
||||
case "sla":
|
||||
<SlaTargetManager TenantId="tenant.Id" />
|
||||
break;
|
||||
case "networking":
|
||||
<NetworkingTab TenantId="tenant.Id" />
|
||||
break;
|
||||
case "git":
|
||||
<GitReposTab TenantId="tenant.Id" />
|
||||
break;
|
||||
}
|
||||
</div>
|
||||
}
|
||||
@@ -106,11 +188,35 @@ else
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
AuthenticationState authState = await AuthStateProvider.GetAuthenticationStateAsync();
|
||||
System.Security.Claims.ClaimsPrincipal user = authState.User;
|
||||
|
||||
if (user.Identity?.IsAuthenticated != true)
|
||||
{
|
||||
Navigation.NavigateTo("/Account/Login", forceLoad: true);
|
||||
return;
|
||||
}
|
||||
|
||||
string? userId = user.FindFirst(System.Security.Claims.ClaimTypes.NameIdentifier)?.Value;
|
||||
if (userId is null)
|
||||
{
|
||||
Navigation.NavigateTo("/Account/Login", forceLoad: true);
|
||||
return;
|
||||
}
|
||||
|
||||
tenant = await TenantService.GetTenantBySlugAsync(Slug);
|
||||
|
||||
if (tenant is null)
|
||||
{
|
||||
Navigation.NavigateTo("/tenants");
|
||||
return;
|
||||
}
|
||||
|
||||
bool canAccess = await UserAccessService.HasTenantAccessAsync(userId, tenant.Id);
|
||||
if (!canAccess)
|
||||
{
|
||||
bool hasMembership = await UserAccessService.HasAnyTenantMembershipAsync(userId);
|
||||
Navigation.NavigateTo(hasMembership ? "/tenants" : "/portal");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user