diff --git a/src/PanoptesFrontend/PanoptesFrontend.csproj b/src/PanoptesFrontend/PanoptesFrontend.csproj index 9c62f3a..7b8342f 100644 --- a/src/PanoptesFrontend/PanoptesFrontend.csproj +++ b/src/PanoptesFrontend/PanoptesFrontend.csproj @@ -8,6 +8,7 @@ + diff --git a/src/PanoptesFrontend/Program.cs b/src/PanoptesFrontend/Program.cs index 8349c9f..66258be 100644 --- a/src/PanoptesFrontend/Program.cs +++ b/src/PanoptesFrontend/Program.cs @@ -1,6 +1,7 @@ using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Web; using PanoptesFrontend.Services; +using Blazored.LocalStorage; var builder = WebApplication.CreateBuilder(args); @@ -8,8 +9,9 @@ var builder = WebApplication.CreateBuilder(args); builder.Services.AddRazorPages(); builder.Services.AddServerSideBlazor(); builder.Services.AddHttpClient(); -builder.Services.AddSingleton(); -builder.Services.AddSingleton(); +builder.Services.AddScoped(); +builder.Services.AddScoped(); +builder.Services.AddBlazoredLocalStorage(); var app = builder.Build(); diff --git a/src/PanoptesFrontend/Services/AccountService.cs b/src/PanoptesFrontend/Services/AccountService.cs index 67e6008..21a3915 100644 --- a/src/PanoptesFrontend/Services/AccountService.cs +++ b/src/PanoptesFrontend/Services/AccountService.cs @@ -1,8 +1,7 @@ using PanoptesFrontend.Data.Account; using PanoptesFrontend.Data; -using Microsoft.AspNetCore.Components; -using System.Collections.Generic; -using System.Threading.Tasks; +using Blazored.LocalStorage; +using System.Text.Json; namespace PanoptesFrontend.Services; @@ -17,24 +16,30 @@ public interface IAccountService public class AccountService : IAccountService { private IHttpService httpService; + private ILocalStorageService localStorage; - public AccountService(IHttpService httpService) { + public AccountService(IHttpService httpService, ILocalStorageService localStorage) { this.httpService = httpService; + this.localStorage = localStorage; } public async Task Register(AddUser model){ - // endpoint doesnt exist yet await httpService.PostAsync("http://localhost:10000/user/register", model); } public async Task Login(LoginUser model){ - // endpoint doesnt exist yet - await httpService.PostAsync("http://localhost:10000/user/login", model); + var response = await httpService.PostAsync("http://localhost:10000/user/login", model); + + var jsonDoc = JsonDocument.Parse(response); + var token = jsonDoc.RootElement.GetProperty("token").GetString(); + + // Save the JWT token to local storage + await localStorage.SetItemAsync("authToken", token); } public async Task Logout(User model){ - // endpoint doesnt exist yet await httpService.PostAsync("http://localhost:10000/user/logout", model); + await localStorage.RemoveItemAsync("authToken"); } } \ No newline at end of file diff --git a/src/PanoptesFrontend/Services/HttpService.cs b/src/PanoptesFrontend/Services/HttpService.cs index 1b60c6b..30171a8 100644 --- a/src/PanoptesFrontend/Services/HttpService.cs +++ b/src/PanoptesFrontend/Services/HttpService.cs @@ -8,7 +8,7 @@ using System.Text.Json; public interface IHttpService { Task GetAsync(string endpoint); - Task PostAsync(string endpoint, object value); + Task PostAsync(string endpoint, object value); } public class HttpService : IHttpService { @@ -32,11 +32,9 @@ public class HttpService : IHttpService { } } - public async Task PostAsync(string endpoint, object value){ - var request = await httpClient.PostAsJsonAsync(endpoint, value); - - request.EnsureSuccessStatusCode(); - - return request.StatusCode; + public async Task PostAsync(string endpoint, object value){ + var response = await httpClient.PostAsJsonAsync(endpoint, value); + response.EnsureSuccessStatusCode(); + return await response.Content.ReadAsStringAsync(); } } \ No newline at end of file