using EnvelopeGenerator.ReceiverUI.Client.Services.Base; namespace EnvelopeGenerator.ReceiverUI.Client.Services; /// /// Spricht mit dem bestehenden AuthController der API. /// Die API erkennt den Nutzer über das Cookie "AuthToken" automatisch. /// public class AuthService : ApiServiceBase, IAuthService { public AuthService(HttpClient http, ILogger logger) : base(http, logger) { } public async Task CheckAuthAsync(string? role = null, CancellationToken ct = default) { var endpoint = role is not null ? $"api/auth/check?role={role}" : "api/auth/check"; try { var response = await Http.GetAsync(endpoint, ct); return response.IsSuccessStatusCode ? ApiResponse.Success((int)response.StatusCode) : ApiResponse.Failure((int)response.StatusCode); } catch (HttpRequestException ex) { Logger.LogError(ex, "HTTP error calling GET {Endpoint}", endpoint); return ApiResponse.Failure(0, "Verbindung zum Server fehlgeschlagen."); } catch (TaskCanceledException) { return ApiResponse.Failure(0, "Anfrage abgebrochen."); } } public async Task LogoutAsync(CancellationToken ct = default) { const string endpoint = "api/auth/logout"; try { var response = await Http.PostAsync(endpoint, null, ct); return response.IsSuccessStatusCode ? ApiResponse.Success((int)response.StatusCode) : ApiResponse.Failure((int)response.StatusCode); } catch (HttpRequestException ex) { Logger.LogError(ex, "HTTP error calling POST {Endpoint}", endpoint); return ApiResponse.Failure(0, "Verbindung zum Server fehlgeschlagen."); } catch (TaskCanceledException) { return ApiResponse.Failure(0, "Anfrage abgebrochen."); } } }