From 35de6a472c077aaf273713bb33fe5938a8b25116 Mon Sep 17 00:00:00 2001 From: Lilian Date: Wed, 24 Apr 2024 03:52:39 +0200 Subject: [PATCH] [frontend] Set cookie on session change --- Iceshrimp.Frontend/Core/Services/SessionService.cs | 7 ++++++- Iceshrimp.Frontend/Pages/Login.razor | 1 - 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Iceshrimp.Frontend/Core/Services/SessionService.cs b/Iceshrimp.Frontend/Core/Services/SessionService.cs index e002e62f..d15d4878 100644 --- a/Iceshrimp.Frontend/Core/Services/SessionService.cs +++ b/Iceshrimp.Frontend/Core/Services/SessionService.cs @@ -1,6 +1,7 @@ using Blazored.LocalStorage; using Iceshrimp.Frontend.Core.Schemas; using Microsoft.AspNetCore.Components; +using Microsoft.JSInterop; namespace Iceshrimp.Frontend.Core.Services; @@ -8,13 +9,15 @@ internal class SessionService { [Inject] public ISyncLocalStorageService LocalStorage { get; } [Inject] public ApiService ApiService { get; } + [Inject] public IJSRuntime Js { get; } public Dictionary Users { get; } public StoredUser? Current { get; private set; } - public SessionService(ApiService apiService, ISyncLocalStorageService localStorage) + public SessionService(ApiService apiService, ISyncLocalStorageService localStorage, IJSRuntime js) { ApiService = apiService; LocalStorage = localStorage; + Js = js; Users = LocalStorage.GetItem>("Users") ?? []; var lastUser = LocalStorage.GetItem("last_user"); if (lastUser != null) @@ -68,5 +71,7 @@ internal class SessionService ApiService.SetBearerToken(user.Token); Current = user; LocalStorage.SetItem("last_user", user.Id); + ((IJSInProcessRuntime)Js).InvokeVoid("eval", + $"document.cookie = \"session={user.Id}; expires=Fri, 31 Dec 9999 23:59:59 GMT; SameSite=Strict\""); } } \ No newline at end of file diff --git a/Iceshrimp.Frontend/Pages/Login.razor b/Iceshrimp.Frontend/Pages/Login.razor index 6934c0b0..dba43bda 100644 --- a/Iceshrimp.Frontend/Pages/Login.razor +++ b/Iceshrimp.Frontend/Pages/Login.razor @@ -3,7 +3,6 @@ @using Iceshrimp.Frontend.Core.Schemas @using Iceshrimp.Frontend.Core.Services @using Iceshrimp.Shared.Schemas -@using Iceshrimp.Frontend.Components @inject ApiService Api @inject SessionService SessionService @inject NavigationManager Navigation