@page "/first-run-setup" @inject IAuthService AuthService @inject ISettingsService SettingsService @inject NavigationManager Navigation @inject ILocalizationService Loc @rendermode InteractiveServer Ersteinrichtung

Ersteinrichtung

Willkommen bei Author Buddy! Richten Sie Ihren Administrator-Account ein.

@if (!_setupComplete) {
@if (!string.IsNullOrEmpty(_generatedPassword)) {
Sicherheitswarnung!

Dieses Passwort wird nur einmalig angezeigt. Speichern Sie es sofort sicher ab.

@_generatedPassword

Nach dem Klick auf "Admin erstellen" wird das Passwort nicht mehr angezeigt.

} } else {
Admin-Account erfolgreich erstellt!

Sie werden zum Login weitergeleitet...

} @if (!string.IsNullOrEmpty(_errorMessage)) {
@_errorMessage
}
@code { private string _username = "admin"; private string? _generatedPassword; private string _password = string.Empty; private string _errorMessage = string.Empty; private bool _isBusy; private bool _setupComplete; protected override async Task OnInitializedAsync() { var users = await SettingsService.GetUsersAsync(); if (users.Count > 0) { Navigation.NavigateTo("/login"); } } private void GeneratePassword() { using var rng = System.Security.Cryptography.RandomNumberGenerator.Create(); var bytes = new byte[12]; rng.GetBytes(bytes); _generatedPassword = Convert.ToBase64String(bytes).TrimEnd('=').Replace('+', 'X').Replace('/', 'Y'); _password = string.Empty; _errorMessage = string.Empty; } private async Task CreateAdmin() { if (string.IsNullOrWhiteSpace(_username) || string.IsNullOrWhiteSpace(_password)) { _errorMessage = "Benutzername und Passwort dürfen nicht leer sein."; return; } _isBusy = true; _errorMessage = string.Empty; try { var result = await AuthService.RegisterAsync(_username, _password); if (result) { _generatedPassword = null; _password = string.Empty; _setupComplete = true; StateHasChanged(); await Task.Delay(2000); Navigation.NavigateTo("/login"); } else { _errorMessage = "Benutzername bereits vergeben."; } } catch (Exception ex) { _errorMessage = $"Fehler: {ex.Message}"; } finally { _isBusy = false; } } }