59 lines
1.8 KiB
C#
59 lines
1.8 KiB
C#
using PanoptesFrontend.Data.Account;
|
|
using PanoptesFrontend.Data;
|
|
using Blazored.LocalStorage;
|
|
using System.Text.Json;
|
|
using System;
|
|
|
|
namespace PanoptesFrontend.Services;
|
|
|
|
public interface IAccountService
|
|
{
|
|
Task Register(AddUser model);
|
|
Task Login(LoginUser model);
|
|
Task Logout(string token);
|
|
Task<string> GetTokenFromLocalStorage();
|
|
|
|
}
|
|
|
|
public class AccountService : IAccountService
|
|
{
|
|
private IHttpService httpService;
|
|
private ILocalStorageService localStorage;
|
|
|
|
public AccountService(IHttpService httpService, ILocalStorageService localStorage) {
|
|
this.httpService = httpService;
|
|
this.localStorage = localStorage;
|
|
}
|
|
|
|
|
|
public async Task Register(AddUser model){
|
|
var panoptesHost = Environment.GetEnvironmentVariable("PANOPTESHOST");
|
|
await httpService.PostAsync($"http://{panoptesHost}/user/register", model);
|
|
}
|
|
|
|
public async Task Login(LoginUser model){
|
|
var panoptesHost = Environment.GetEnvironmentVariable("PANOPTESHOST");
|
|
var response = await httpService.PostAsync($"http://panoptesHost/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(string token){
|
|
|
|
var authtoken = await localStorage.GetItemAsStringAsync("authToken");
|
|
|
|
var panoptesHost = Environment.GetEnvironmentVariable("PANOPTESHOST");
|
|
await httpService.PostAsync($"http://{panoptesHost}/user/logout", authtoken);
|
|
await localStorage.RemoveItemAsync("authToken");
|
|
}
|
|
|
|
public async Task<string> GetTokenFromLocalStorage()
|
|
{
|
|
return await localStorage.GetItemAsStringAsync("authToken");
|
|
}
|
|
}
|