83 lines
2.6 KiB
Plaintext
83 lines
2.6 KiB
Plaintext
@inherits LayoutComponentBase
|
|
@inject AuthenticationStateProvider AuthStateProvider
|
|
@inject NavigationManager Nav
|
|
@inject IUserNotificationService UserNotificationService
|
|
@implements IDisposable
|
|
@using System.Security.Claims
|
|
|
|
<MudThemeProvider Theme="_theme" />
|
|
<MudPopoverProvider />
|
|
<MudDialogProvider />
|
|
<MudSnackbarProvider />
|
|
|
|
<MudLayout>
|
|
<MudAppBar Elevation="2" Style="background: linear-gradient(90deg, #3F51B5 0%, #1A237E 100%);">
|
|
<MudIconButton Icon="@Icons.Material.Filled.Menu" Color="Color.Inherit" Edge="Edge.Start" OnClick="ToggleDrawer" />
|
|
<MudStack Row="true" AlignItems="AlignItems.Center" Spacing="2" Class="ml-2">
|
|
<MudIcon Icon="@Icons.Material.Filled.AccessTime" Style="color:white; font-size:1.6rem" />
|
|
<MudText Typo="Typo.h6" Style="color:white; font-weight:700; letter-spacing:0.5px">Timetracker</MudText>
|
|
</MudStack>
|
|
<MudSpacer />
|
|
</MudAppBar>
|
|
|
|
<MudDrawer @bind-Open="_drawerOpen" ClipMode="DrawerClipMode.Always" Elevation="2">
|
|
<NavMenu />
|
|
</MudDrawer>
|
|
|
|
<MudMainContent>
|
|
<MudContainer MaxWidth="MaxWidth.Large" Class="mt-4 pb-8">
|
|
@Body
|
|
</MudContainer>
|
|
</MudMainContent>
|
|
|
|
<AuthorizeView>
|
|
<Authorized>
|
|
<ChatbotWidget />
|
|
</Authorized>
|
|
</AuthorizeView>
|
|
</MudLayout>
|
|
|
|
@code {
|
|
private bool _drawerOpen = true;
|
|
|
|
protected override void OnInitialized()
|
|
{
|
|
UserNotificationService.OnUserDeleted += HandleUserDeleted;
|
|
}
|
|
|
|
private async Task HandleUserDeleted(int deletedUserId)
|
|
{
|
|
var state = await AuthStateProvider.GetAuthenticationStateAsync();
|
|
var idClaim = state.User.FindFirst(ClaimTypes.NameIdentifier)?.Value;
|
|
if (idClaim != null && int.TryParse(idClaim, out var myId) && myId == deletedUserId)
|
|
{
|
|
await InvokeAsync(() => Nav.NavigateTo("/auth/logout", forceLoad: true));
|
|
}
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
UserNotificationService.OnUserDeleted -= HandleUserDeleted;
|
|
}
|
|
|
|
private readonly MudTheme _theme = new()
|
|
{
|
|
PaletteLight = new PaletteLight
|
|
{
|
|
Primary = "#3F51B5",
|
|
PrimaryDarken = "#1A237E",
|
|
PrimaryLighten = "#7986CB",
|
|
Secondary = "#009688",
|
|
SecondaryDarken = "#00695C",
|
|
AppbarBackground = "#3F51B5",
|
|
Background = "#F4F6F9",
|
|
DrawerBackground = "#FFFFFF",
|
|
Surface = "#FFFFFF",
|
|
TextPrimary = "#212121",
|
|
TextSecondary = "#757575",
|
|
}
|
|
};
|
|
|
|
private void ToggleDrawer() => _drawerOpen = !_drawerOpen;
|
|
}
|