@page "/login" @using System.IdentityModel.Tokens.Jwt; @using System.Security.Claims; @using Newtonsoft.Json.Linq; @using System.Text.Json; @using System.Reflection; @using TIAMWebApp.Shared.Application.Interfaces; @using TIAMWebApp.Shared.Application.Models.PageModels; @using TIAMSharedUI.Pages.Components; @using TIAMWebApp.Shared.Application.Models.ClientSide; @using TIAMWebApp.Shared.Application.Models; @using TIAMWebApp.Shared.Application.Utility; @using AyCode.Interfaces.StorageHandlers; @inject NavigationManager navManager @inject LogToBrowserConsole logToBrowserConsole @inject IUserDataService userDataService @inject IJSRuntime jsRuntime @inject ISecureStorageHandler SecureStorageHandler Login
Let's get you inside!
@switch (currentStep) { case 1: ; break; case 2: ; break; }

@currentStep

@{ if (!loggedIn) {

@loginModel.Email

@loginModel.Password

} }
No account yet? Sign up here!
@code { LoginModel loginModel = new(); private int currentStep = 1; bool loggedIn = false; private void GoToNextStep() { currentStep++; } private void GoToPreviousStep() { currentStep--; } private async void SubmitLogin() { currentStep = 1; logToBrowserConsole.LogToBC("Login started: " + "Email: " + loginModel.Email + ", Password: " + loginModel.Password); var response = await userDataService.AuthenticateUser(loginModel); //var response = await UserDataservice.TestUserApi(30); logToBrowserConsole.LogToBC("Login started"); logToBrowserConsole.LogToBC(response); if (!string.IsNullOrEmpty(response)) { //get token and save to local storage //parse to Mainresponse from json string //var Mainresponse = JsonSerializer.Deserialize(response); var Mainresponse = JsonSerializer.Deserialize(response, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); if (Mainresponse != null) { //check for bad request string AuthResponseJson = JsonSerializer.Serialize(Mainresponse.Content); var AuthResponse = JsonSerializer.Deserialize(AuthResponseJson, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); string accessToken = AuthResponse.AccessToken; var handler = new JwtSecurityTokenHandler(); var token = handler.ReadJwtToken(accessToken) as JwtSecurityToken; string _userId = token.Claims.First(claim => claim.Type == JwtRegisteredClaimNames.NameId).Value; string _email = token.Claims.First(claim => claim.Type == JwtRegisteredClaimNames.Email).Value; var myId = Guid.Parse(_userId); //userDataService.User.Email = _email; var userBasicDetails = new UserBasicDetails(_userId, _email, AuthResponse.AccessToken, AuthResponse.RefreshToken); string userBasicDetailsJson = JsonSerializer.Serialize(userBasicDetails); //save to local storage await SecureStorageHandler.SaveToSecureStorageAsync(nameof(Setting.UserBasicDetails), userBasicDetailsJson); if (!Mainresponse.IsSuccess) { //await App.Current.MainPage.DisplayAlert("Error", "Invalid credentials", "Ok"); //display error message via jsinterop logToBrowserConsole.LogToBC("Invalid credentials"); navManager.NavigateTo("login"); } else { //await App.Current.MainPage.DisplayAlert("Success", "Successful login", "Ok"); //display success message via jsinterop logToBrowserConsole.LogToBC("Successful login"); var user = await userDataService.IsLoggedInAsync(myId); user.UserType = UserType.Admin; navManager.NavigateTo("home"); } } } else { //api error //await App.Current.MainPage.DisplayAlert("Error", "An error occured while trying to login", "Ok"); //display error message via jsinterop logToBrowserConsole.LogToBC("An error occured while trying to login"); navManager.NavigateTo("login"); } } }