Start der Backend Implementierung

Projekt für die Implementierung des Backends hinzugefügt. Klasse Logger --> Dient zum Loggen in die Datenbank. Klasse Ticket_System --> Hauptklasse für das die Backendanwendung. Auth Client hinzugefügt. Token stuff hinzugefügt.
This commit is contained in:
2026-01-28 12:48:40 +01:00
parent 1f38e7264b
commit 07b2a8ae0f
20 changed files with 354 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
using System;
using System.Collections.Generic;
using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;
namespace Ticket_System
{
public sealed class AuthApiClient
{
private readonly HttpClient _http;
private readonly JsonSerializerOptions _json = new() { PropertyNameCaseInsensitive = true };
public AuthApiClient(string baseUrl)
{
_http = new HttpClient { BaseAddress = new Uri(baseUrl.TrimEnd('/') + "/") };
}
public async Task<ResponseToken?> SignInAsync(string name, string password)
{
var req = new SignInRequest { name = name, password = password };
var content = new StringContent(
JsonSerializer.Serialize(req),
Encoding.UTF8,
"application/json"
);
using var resp = await _http.PostAsync("signin", content);
var body = await resp.Content.ReadAsStringAsync();
if (resp.IsSuccessStatusCode)
{
return JsonSerializer.Deserialize<ResponseToken>(body, _json);
}
// optional: Fehler-Body auswerten
// var err = JsonSerializer.Deserialize<SignInErrorResponse>(body, _json);
return null;
}
public async Task<bool> ValidateTokenAsync(string token)
{
using var req = new HttpRequestMessage(HttpMethod.Get, "token/validate");
req.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);
using var resp = await _http.SendAsync(req);
var body = await resp.Content.ReadAsStringAsync();
if (!resp.IsSuccessStatusCode) return false;
var result = JsonSerializer.Deserialize<TokenIsValid>(body, _json);
return result?.is_valid == true;
}
}
}