146 lines
4.6 KiB
Plaintext
146 lines
4.6 KiB
Plaintext
@page "/account/login"
|
|
|
|
@using Microsoft.AspNetCore.Components.Authorization
|
|
@using Microsoft.AspNetCore.WebUtilities
|
|
|
|
@inject NavigationManager NavigationManager
|
|
@inject Microsoft.AspNetCore.Antiforgery.IAntiforgery Antiforgery
|
|
@inject IHttpContextAccessor HttpContextAccessor
|
|
@inject IConfiguration Configuration
|
|
|
|
|
|
<form method="post" action="/auth/login">
|
|
<!-- Hidden Fields -->
|
|
<input type="hidden" name="ReturnUrl" value="@_returnUrl" />
|
|
<input type="hidden" name="__RequestVerificationToken" value="@_antiToken" />
|
|
|
|
<MudPaper Class="pa-6" Elevation="4" MaxWidth="400px">
|
|
@if (!string.IsNullOrWhiteSpace(_inviteToken))
|
|
{
|
|
<MudAlert Severity="Severity.Info" Class="mb-3">
|
|
Bitte melde dich an, um die Club-Einladung anzunehmen.
|
|
</MudAlert>
|
|
}
|
|
@if (_registered)
|
|
{
|
|
<MudAlert Severity="Severity.Success" Class="mb-3">Registrierung erfolgreich! Bitte anmelden.</MudAlert>
|
|
}
|
|
@if (!string.IsNullOrWhiteSpace(_error))
|
|
{
|
|
<MudAlert Severity="Severity.Error" Class="mb-3">@_error</MudAlert>
|
|
}
|
|
@if (_demoEnabled)
|
|
{
|
|
<MudAlert Severity="Severity.Info" Class="mb-3" Icon="@Icons.Material.Filled.Info">
|
|
<strong>Demo-Zugang:</strong> @_demoEmail / @_demoPassword / @_demoClub
|
|
</MudAlert>
|
|
}
|
|
|
|
<MudText Typo="Typo.h5" Class="mb-4">
|
|
Anmeldung
|
|
</MudText>
|
|
|
|
<MudTextField T="string"
|
|
Name="Email"
|
|
Label="E-Mail"
|
|
Variant="Variant.Outlined"
|
|
Required="true"
|
|
InputType="InputType.Email"
|
|
AutoComplete="username"
|
|
Class="mb-3" />
|
|
|
|
<MudTextField T="string"
|
|
Name="Password"
|
|
Label="Passwort"
|
|
Variant="Variant.Outlined"
|
|
Required="true"
|
|
InputType="InputType.Password"
|
|
AutoComplete="current-password"
|
|
Class="mb-3" />
|
|
|
|
<MudTextField T="string"
|
|
Name="ClubName"
|
|
Label="Club Login-Name"
|
|
Variant="Variant.Outlined"
|
|
Required="true"
|
|
Placeholder="Clubname"
|
|
Style="text-transform: lowercase;"
|
|
Class="mb-3" />
|
|
|
|
<MudCheckBox T="bool"
|
|
Name="RememberMe"
|
|
Label="Angemeldet bleiben"
|
|
Value="true"
|
|
Class="mb-4" />
|
|
|
|
<MudButton
|
|
ButtonType="ButtonType.Submit"
|
|
Variant="Variant.Filled"
|
|
Color="Color.Primary"
|
|
FullWidth="true"
|
|
Class="mb-3">
|
|
Anmelden
|
|
</MudButton>
|
|
|
|
<MudStack Row="true" Justify="Justify.SpaceBetween" Class="mt-2">
|
|
<MudLink Href="/account/register" Typo="Typo.body2">
|
|
Noch kein Konto? Registrieren
|
|
</MudLink>
|
|
<MudLink Href="/account/forgot-password" Typo="Typo.body2">
|
|
Passwort vergessen?
|
|
</MudLink>
|
|
</MudStack>
|
|
|
|
</MudPaper>
|
|
</form>
|
|
|
|
|
|
@code {
|
|
private string _returnUrl = "/dashboard";
|
|
private string? _error;
|
|
private string _antiToken = "";
|
|
private bool _registered;
|
|
private string? _inviteToken;
|
|
private bool _demoEnabled;
|
|
private string _demoEmail = "";
|
|
private string _demoPassword = "";
|
|
private string _demoClub = "";
|
|
|
|
protected override void OnInitialized()
|
|
{
|
|
var uri = NavigationManager.ToAbsoluteUri(NavigationManager.Uri);
|
|
var query = QueryHelpers.ParseQuery(uri.Query);
|
|
|
|
if (query.TryGetValue("returnUrl", out var ru)) _returnUrl = ru!;
|
|
if (query.TryGetValue("error", out var err))
|
|
{
|
|
_error = "Login fehlgeschlagen";
|
|
}
|
|
if (query.TryGetValue("registered", out _))
|
|
{
|
|
_registered = true;
|
|
}
|
|
if (query.TryGetValue("invite", out var invite))
|
|
{
|
|
_inviteToken = invite.ToString();
|
|
// After login, redirect to join by invite
|
|
_returnUrl = $"/club/join/{_inviteToken}";
|
|
}
|
|
|
|
// Antiforgery Token generieren (klassischer MVC Token)
|
|
var http = HttpContextAccessor.HttpContext!;
|
|
var tokens = Antiforgery.GetAndStoreTokens(http);
|
|
_antiToken = tokens.RequestToken!;
|
|
|
|
// Demo credentials from configuration
|
|
_demoEnabled = Configuration.GetValue<bool>("Bootstrap:Demo:Enabled");
|
|
if (_demoEnabled)
|
|
{
|
|
_demoEmail = Configuration["Bootstrap:Demo:Email"] ?? "demo@koogle.de";
|
|
_demoPassword = Configuration["Bootstrap:Demo:Password"] ?? "demo123";
|
|
_demoClub = Configuration["Bootstrap:Demo:LoginName"] ?? "demo";
|
|
}
|
|
}
|
|
|
|
}
|