Selector/Selector.MAUI/Pages/Login.razor

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;
}
}
}