64 lines
1.6 KiB
Plaintext
64 lines
1.6 KiB
Plaintext
@page "/login"
|
|
@using OnProfNext.Client.Services
|
|
@using OnProfNext.Shared.Models
|
|
@inject HttpClient Http
|
|
@inject NavigationManager Nav
|
|
@inject IJSRuntime JS
|
|
@inject AuthService AuthService
|
|
|
|
<h3>Anmeldung</h3>
|
|
|
|
@if (error is not null)
|
|
{
|
|
<div class="alert alert-danger">@error</div>
|
|
}
|
|
|
|
<EditForm Model="login" OnValidSubmit="HandleLogin">
|
|
<DataAnnotationsValidator />
|
|
<ValidationSummary />
|
|
|
|
<div class="mb-3">
|
|
<label>Benutzername</label>
|
|
<InputText class="form-control" @bind-Value="login.Username" />
|
|
</div>
|
|
|
|
<div class="mb-3">
|
|
<label>Passwort</label>
|
|
<InputText type="password" class="form-control" @bind-Value="login.Password" />
|
|
</div>
|
|
|
|
<button type="submit" class="btn btn-primary w-100">Login</button>
|
|
|
|
<div class="text-center mt-3">
|
|
<span>Noch keinen Account? </span>
|
|
<a href="/createuser" class="link-primary text-decoration-none">Registrieren</a>
|
|
</div>
|
|
</EditForm>
|
|
|
|
|
|
@code {
|
|
private LoginRequest login = new();
|
|
private string? error;
|
|
|
|
private async Task HandleLogin()
|
|
{
|
|
try
|
|
{
|
|
var response = await Http.PostAsJsonAsync("api/auth/login", login);
|
|
if (!response.IsSuccessStatusCode)
|
|
{
|
|
error = "Anmeldung fehlgeschlagen.";
|
|
return;
|
|
}
|
|
|
|
var result = await response.Content.ReadFromJsonAsync<LoginResponse>();
|
|
|
|
await AuthService.LoginAsync(result!.Token);
|
|
Nav.NavigateTo("/");
|
|
}
|
|
catch
|
|
{
|
|
error = "Server nicht erreichbar.";
|
|
}
|
|
}
|
|
} |