@page "/login"
@inject IAuthenticationService AuthenticationService
@inject NavigationManager Navigation
@layout AuthLayout
Login
@if (!string.IsNullOrEmpty(_errorMessage))
{
@_errorMessage
}
@code {
private readonly UserLoginModel _loginModel = new();
private string _errorMessage = string.Empty;
private async Task HandleLogin()
{
_errorMessage = string.Empty;
var response = await AuthenticationService.Login(_loginModel);
if (response.StatusCode == 200)
{
var token = await AuthenticationService.GetAuthToken();
var handler = new JwtSecurityTokenHandler();
var jwtToken = handler.ReadJwtToken(token);
var role = jwtToken.Claims.FirstOrDefault(c => c.Type == "role")?.Value;
switch (role)
{
case UserRoles.Admin:
Navigation.NavigateTo("/admin/dashboard", true);
break;
case UserRoles.Doctor:
Navigation.NavigateTo("/doctor/dashboard", true);
break;
case UserRoles.Patient:
Navigation.NavigateTo("/patient/dashboard", true);
break;
}
}
else
{
_errorMessage = response.Message; // Display error message
}
}
protected override async Task OnInitializedAsync()
{
var token = await AuthenticationService.GetAuthToken();
var handler = new JwtSecurityTokenHandler();
var jwtToken = handler.ReadJwtToken(token);
var role = jwtToken.Claims.FirstOrDefault(c => c.Type == "role")?.Value;
switch (role)
{
case UserRoles.Admin:
Navigation.NavigateTo("/admin/dashboard", true);
break;
case UserRoles.Doctor:
Navigation.NavigateTo("/doctor/dashboard", true);
break;
case UserRoles.Patient:
Navigation.NavigateTo("/patient/dashboard", true);
break;
}
}
}