@page "/miniapp" @using Microsoft.AspNetCore.Components.Authorization @inject IJSRuntime JS @inject NavigationManager Navigation Mini App Dashboard — GM-Relay

GM-Relay

@statusMessage

@if (showFallback) { Войти через Telegram }
@code { private string statusMessage = "Открываем dashboard внутри Telegram..."; private bool showFallback; [CascadingParameter] private Task? AuthStateTask { get; set; } protected override async Task OnInitializedAsync() { if (AuthStateTask is null) { return; } var user = (await AuthStateTask).User; if (user.Identity?.IsAuthenticated == true) { Navigation.NavigateTo("/"); } } protected override async Task OnAfterRenderAsync(bool firstRender) { if (!firstRender) { return; } try { var authenticated = await JS.InvokeAsync( "authenticateTelegramMiniApp", "/auth/telegram-webapp", "/"); if (!authenticated) { statusMessage = "Mini App доступен из Telegram. Для браузера используйте обычный вход."; showFallback = true; StateHasChanged(); } } catch (JSException) { statusMessage = "Не удалось получить данные Telegram Mini App. Попробуйте открыть dashboard из бота."; showFallback = true; StateHasChanged(); } } }