59 lines
1.9 KiB
Plaintext
59 lines
1.9 KiB
Plaintext
@page "/login"
|
|
@inject SessionManager session
|
|
@inject NavigationManager navigation
|
|
|
|
<div class="form-container">
|
|
<h1 class="text-center">Login</h1>
|
|
|
|
<p>@toast</p>
|
|
|
|
<EditForm Model="@loginModel" OnSubmit="@HandleSubmit">
|
|
<InputText id="username" type="text" placeholder="Username" @bind-Value="loginModel.Username" tabindex=1 class="input-boxes" />
|
|
<InputText type="password" placeholder="Password" @bind-Value="loginModel.Password" tabindex=2 class="input-boxes" />
|
|
|
|
<div class="row" style="margin-top: 15px">
|
|
<RadzenButton Text="Submit" ButtonType="ButtonType.Submit" IsBusy=@isLoading ButtonStyle="ButtonStyle.Info" />
|
|
</div>
|
|
</EditForm>
|
|
</div>
|
|
|
|
@code {
|
|
private LoginModel loginModel = new();
|
|
private string toast = string.Empty;
|
|
|
|
private bool isLoading = false;
|
|
|
|
[Inject]
|
|
private ILogger<Login> logger { get; set; }
|
|
|
|
private async Task HandleSubmit()
|
|
{
|
|
isLoading = true;
|
|
|
|
var authResult = await session.Authenticate(loginModel.Username, loginModel.Password);
|
|
|
|
isLoading = false;
|
|
|
|
switch (authResult)
|
|
{
|
|
case SelectorNetClient.TokenResponseStatus.Malformed:
|
|
toast = "Bad Request, Username or Password missing";
|
|
break;
|
|
case SelectorNetClient.TokenResponseStatus.UserSearchFailed:
|
|
toast = "User not found";
|
|
break;
|
|
case SelectorNetClient.TokenResponseStatus.BadCreds:
|
|
toast = "Login failed, try again";
|
|
break;
|
|
case SelectorNetClient.TokenResponseStatus.ExpiredCreds:
|
|
toast = "Credentials expired, try again";
|
|
break;
|
|
case SelectorNetClient.TokenResponseStatus.OK:
|
|
logger.LogInformation("Login succeeded, redirecting");
|
|
navigation.NavigateTo("/app");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|