@page "/tenants/{Slug}"
@using EntKube.Web.Data
@using EntKube.Web.Services
@using Microsoft.EntityFrameworkCore
@rendermode InteractiveServer
@inject TenantService TenantService
@inject UserAccessService UserAccessService
@inject AuthenticationStateProvider AuthStateProvider
@inject NavigationManager Navigation
@(tenant?.Name ?? "Tenant")
@if (tenant is null)
{
}
else
{
Tenants
@tenant.Name
@tenant.Name
@tenant.Slug
activeTab = "environments"'>
Environments
activeTab = "customers"'>
Customers
activeTab = "vault"'>
Vault
activeTab = "groups"'>
Groups
activeTab = "databases"'>
Databases
activeTab = "storage"'>
Storage
activeTab = "identity"'>
Identity
activeTab = "registry"'>
Registry
activeTab = "messaging"'>
Messaging
activeTab = "cache"'>
Cache
activeTab = "overview"'>
Overview
activeTab = "incidents"'>
Incidents
activeTab = "notifications"'>
Notifications
activeTab = "maintenance"'>
Maintenance
activeTab = "sla"'>
SLA
activeTab = "networking"'>
Networking
activeTab = "git"'>
Git
@switch (activeTab)
{
case "environments":
break;
case "customers":
break;
case "vault":
break;
case "groups":
break;
case "databases":
break;
case "storage":
break;
case "identity":
break;
case "registry":
break;
case "messaging":
break;
case "cache":
break;
case "overview":
break;
case "incidents":
break;
case "notifications":
break;
case "maintenance":
break;
case "sla":
break;
case "networking":
break;
case "git":
break;
}
}
@code {
[Parameter] public string Slug { get; set; } = "";
private Tenant? tenant;
private string activeTab = "environments";
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");
}
}
}