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