@using System.Net @using Fluxor @using Koogle.Application.DTOs @using Koogle.Web.Store.AuthState @using Koogle.Application.Interfaces @inject IState AuthState @inject NavigationManager NavigationManager @inject IUserService UserService @inject HttpClient HttpClient; @inject Microsoft.AspNetCore.Antiforgery.IAntiforgery Antiforgery @inject IHttpContextAccessor HttpContextAccessor @inject IDispatcher Dispatcher @inherits Fluxor.Blazor.Web.Components.FluxorComponent @if (AuthState.Value.IsAuthenticated && AuthState.Value.CurrentClub != null) { @if (AuthState.Value.AvailableClubs.Count > 1) { @AuthState.Value.CurrentClub.ClubName @foreach (var club in AuthState.Value.AvailableClubs) { @if (club.ClubId == AuthState.Value.CurrentClub?.ClubId) { } @club.ClubName } } else { Club: @AuthState.Value.CurrentClub.ClubName } } else if (AuthState.Value.IsAuthenticated && AuthState.Value.HasNoClub) { Kein Club } @code { private string _antiToken; protected override void OnAfterRender(bool firstRender) { if (firstRender) { var http = HttpContextAccessor.HttpContext!; var tokens = Antiforgery.GetAndStoreTokens(http); _antiToken = tokens.RequestToken!; } } private async Task SwitchClubAsync(Guid clubId) { if (AuthState.Value.CurrentUser == null) return; var model = new SwitchClubFormDto() { ClubId = clubId, UserProfileId = AuthState.Value.CurrentUser.ProfileId }; try { HttpClient.DefaultRequestHeaders.Remove("RequestVerificationToken"); HttpClient.DefaultRequestHeaders.Add( "RequestVerificationToken", _antiToken ); var basepath = NavigationManager.BaseUri; var url = $"{basepath}auth/switch-club"; await HttpClient.PostAsJsonAsync(url, model); // Dispatcher.Dispatch(new AuthState.InitializeAuthSuccessAction(model.UserProfileId, model.ClubId, roles)); NavigationManager.NavigateTo("/dashboard", forceLoad: true); } catch (Exception e) { Console.WriteLine(e); throw; } // try // { // var success = await UserService.SwitchClubAsync(AuthState.Value.CurrentUser.ProfileId, clubId); // if (success) // { // // Force page reload to refresh claims // NavigationManager.NavigateTo(NavigationManager.Uri, forceLoad: true); // } // } // catch (Exception ex) // { // Console.WriteLine($"Club switch failed: {ex.Message}"); // } } }