From ba2cb85fd269fd6a53480c082700b609da0217c3 Mon Sep 17 00:00:00 2001 From: kjh2064 Date: Sun, 28 Jun 2026 15:55:42 +0900 Subject: [PATCH] fix: add authorization header to InquiryBrowserClient requests Blazor Server components cannot access client-side localStorage, so InquiryBrowserClient needs to get the access token from server-side ITokenStore and manually add the Authorization header to requests. This fixes 401 Unauthorized errors when InquiryList loads inquiry data. Co-Authored-By: Claude Haiku 4.5 --- TaxBaik.Web/Services/InquiryBrowserClient.cs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/TaxBaik.Web/Services/InquiryBrowserClient.cs b/TaxBaik.Web/Services/InquiryBrowserClient.cs index 20028ce..ce899c7 100644 --- a/TaxBaik.Web/Services/InquiryBrowserClient.cs +++ b/TaxBaik.Web/Services/InquiryBrowserClient.cs @@ -1,5 +1,6 @@ namespace TaxBaik.Web.Services; +using System.Net.Http; using System.Net.Http.Json; using TaxBaik.Domain.Entities; @@ -21,11 +22,21 @@ public class InquiryBrowserClient : IInquiryBrowserClient { private readonly HttpClient _http; private readonly ILogger _logger; + private readonly ITokenStore _tokenStore; - public InquiryBrowserClient(HttpClient http, ILogger logger) + public InquiryBrowserClient(HttpClient http, ILogger logger, ITokenStore tokenStore) { _http = http; _logger = logger; + _tokenStore = tokenStore; + } + + private void EnsureAuthHeader() + { + if (!string.IsNullOrEmpty(_tokenStore.AccessToken) && !_http.DefaultRequestHeaders.Contains("Authorization")) + { + _http.DefaultRequestHeaders.Authorization = new("Bearer", _tokenStore.AccessToken); + } } public async Task<(IEnumerable Items, int Total)> GetPagedAsync( @@ -33,6 +44,7 @@ public class InquiryBrowserClient : IInquiryBrowserClient { try { + EnsureAuthHeader(); var result = await _http.GetFromJsonAsync( $"inquiry?page={page}&pageSize={pageSize}", cancellationToken: ct); @@ -52,6 +64,7 @@ public class InquiryBrowserClient : IInquiryBrowserClient { try { + EnsureAuthHeader(); return await _http.GetFromJsonAsync( $"inquiry/{id}", cancellationToken: ct); @@ -67,6 +80,7 @@ public class InquiryBrowserClient : IInquiryBrowserClient { try { + EnsureAuthHeader(); var request = new { status }; var response = await _http.PutAsJsonAsync( $"inquiry/{id}/status", @@ -86,6 +100,7 @@ public class InquiryBrowserClient : IInquiryBrowserClient { try { + EnsureAuthHeader(); var request = new { adminMemo }; var response = await _http.PutAsJsonAsync( $"inquiry/{id}/memo", @@ -105,6 +120,7 @@ public class InquiryBrowserClient : IInquiryBrowserClient { try { + EnsureAuthHeader(); var response = await _http.PostAsJsonAsync( $"inquiry/{id}/convert-to-client", new { name, phone, serviceType },