updated service to save and delete json token

This commit is contained in:
gaz8860 Gary 2023-05-02 19:47:01 +01:00
parent f70d3e9994
commit fba938fa2c
4 changed files with 23 additions and 17 deletions

View File

@ -8,6 +8,7 @@
<ItemGroup>
<PackageReference Include="Blazor-ApexCharts" Version="0.9.20-beta" />
<PackageReference Include="Blazored.LocalStorage" Version="4.3.0" />
<PackageReference Include="xunit" Version="2.4.2" />
</ItemGroup>

View File

@ -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<IHttpService, HttpService>();
builder.Services.AddSingleton<IAccountService, AccountService>();
builder.Services.AddScoped<IHttpService, HttpService>();
builder.Services.AddScoped<IAccountService, AccountService>();
builder.Services.AddBlazoredLocalStorage();
var app = builder.Build();

View File

@ -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");
}
}

View File

@ -8,7 +8,7 @@ using System.Text.Json;
public interface IHttpService
{
Task<T> GetAsync<T>(string endpoint);
Task<HttpStatusCode> PostAsync(string endpoint, object value);
Task<string> PostAsync(string endpoint, object value);
}
public class HttpService : IHttpService {
@ -32,11 +32,9 @@ public class HttpService : IHttpService {
}
}
public async Task<HttpStatusCode> PostAsync(string endpoint, object value){
var request = await httpClient.PostAsJsonAsync(endpoint, value);
request.EnsureSuccessStatusCode();
return request.StatusCode;
public async Task<string> PostAsync(string endpoint, object value){
var response = await httpClient.PostAsJsonAsync(endpoint, value);
response.EnsureSuccessStatusCode();
return await response.Content.ReadAsStringAsync();
}
}